コード例 #1
0
void loopCommandLine(void) {
  // print status if we're not in the menu
  if (! menuEnabled) {
    if (TimerReached(&cmdline_looptime, 1000)) {
      printStatus();
    }
  } 
  // check for serial command
  unsigned int c = uart_getc();
  if (!(c & UART_NO_DATA)) {
    if (! menuEnabled) {
      menuEnabled=1;
      printHelp();
    }
    switch((char) c) {
      case 'x': case 'X':  // terminates menu
        uart_puts_P("Leaving menu." NEWLINESTR);
        menuEnabled=0; break;
      case 'b': case 'B':  // show PID values
        printPID(); break;
      case 'r': case 'R':  // reset PID values
        restorePIDDefault(); break;
      case 'o': case 'O':  // print out PID debug data
        togglePIDDebug(); break;
      case 'p':
        setPID_P(getPID_P() - delta); printPID(); break;
      case 'P':
        setPID_P(getPID_P() + delta); printPID();break;
      case 'i':
        setPID_I(getPID_I() - delta); printPID(); break;
      case 'I':
        setPID_I(getPID_I() + delta); printPID(); break;
      case 'd':
        setPID_D(getPID_D() - delta); printPID(); break;
      case 'D':
        setPID_D(getPID_D() + delta); printPID(); break;
      case 't':
        setPIDSetpoint(getPIDSetpoint() - delta); printPID(); break;
      case 'T':
        setPIDSetpoint(getPIDSetpoint() + delta); printPID(); break;
      case 's': case 'S':
        savePIDConfig(); break;
      case '+':  {// adjust delta
          delta *= 10.0; 
          if (delta > MAX_DELTA) delta = MAX_DELTA;
          uart_print_delta();
          break;
        }
      case '-':  {// adjust delta
          delta /= 10.0; 
          if (delta < MIN_DELTA) delta = MIN_DELTA;
          uart_print_delta();
          break;
        }

      case '?': // show menu
        printHelp(); break;
    }
  }
}
コード例 #2
0
ファイル: z1.c プロジェクト: trzye/PRiR
int printPID(int offsprings){
	
	// wypisuje identyfikator procesu 
	printf("%d:%d:E execution\n", offsprings, getpid());
	
	if(offsprings != 0){
		
		// tworzy nowy proces
		switch (fork()) {
			// błąd
			case -1: 
				fprintf(stderr, "Error in fork\n");
				return -1;
			// proces potomny 
			case 0: 
				printf("%d:%d:C creating\n", offsprings, getpid());
				//wywołaj funkcję jeszcze raz i zmniejsz licznik
				return printPID(--offsprings);
			// proces macierzysty 
			default: 
				printf("%d:%d:P waiting\n", offsprings, getpid());
				// czeka na zakończenie procesu potomnego 
				if(wait(0) == -1){
					fprintf(stderr, "Error in wait\n");
					return -1;
				}
				printf("%d:%d:P closing\n", offsprings, getpid());
				return 0;
		}
	}
	
	return 0;
}
コード例 #3
0
ファイル: z1.c プロジェクト: trzye/PRiR
int main ()
{
	return printPID(4);
}