Пример #1
0
/**
 * Read call
 */
ssize_t kb_read(IODevice* self, void* buffer, size_t nbytes)
{
    size_t i;
    char* cbuffer = (char*)buffer;
    for (i = 0; i < nbytes; ++i) {
        cbuffer[i] = kb_getc();
    }
    return i;
}
//-------------------------------Keyboard_input------------------------------------------
void* keyboard_input(void* notuse)
{
	char kbInput = 0; //Stores keyboard input
	char out_msg[100];
	int  instr;
	printMenu();
	while(killFlg == 0)
	{
		instr = 100;
		strcpy(out_msg,"o");
		kbInput = kb_getc();
		if (memData.autoModeOn == OFF || kbInput == ' ' || kbInput == 'a' || 
			kbInput == 'c' || kbInput == 'C' || kbInput == 'L' || kbInput == 'l')
		switch (kbInput)
		{
			case 'q':
			case 'Q':
				strcpy(out_msg, "Program Exiting... \n");
				instr = GUIQUIT;
				killFlg = 1;
				break;
			case 'm':
			case 'M':
				strcpy(out_msg, "Printing Menu... \n");
				printMenu();
				break;
			case ' ':
				//timer_delete(timerid);
				strcpy(out_msg, "ESTOP pressed. \n");
				instr = ESTOP;
				break;
			case 'B':
				strcpy(out_msg,"BaseCW pressed. \n");
				instr = BASECW;
				break;
			case 'b':
				strcpy(out_msg,"BaseCCW pressed. \n");
				instr = BASECCW;	
				break;
			case 'S':
				strcpy(out_msg,"ShoulderUp pressed. \n");
				instr = SHOULDERUP;
				break;
			case 's':
				strcpy(out_msg,"ShoulderDown pressed. \n");
				instr = SHOULDERDW;
				break;
			case 'E':
				strcpy(out_msg,"ElbowUp pressed. \n");
				instr = ELBOWUP;
				break;
			case 'e':
				strcpy(out_msg,"ElbowDown pressed. \n");
				instr = ELBOWDW;
				break;
			case 'P':
				strcpy(out_msg,"PitchUp pressed. \n");
				instr = PITCHUP;
				break;
			case 'p':
				strcpy(out_msg,"PitchDown pressed. \n");
				instr = PITCHDW;
				break;
			case 'R':
				strcpy(out_msg,"RollCW pressed. \n");
				instr = ROLLCW;
				break;
			case 'r':
				strcpy(out_msg,"RollCCW pressed. \n");
				instr = ROLLCCW;
				break;
			case 'G':
				strcpy(out_msg,"GripperOpen pressed. \n");
				instr = GRIPPEROP;
				break;
			case 'g':
				strcpy(out_msg,"GripperClose pressed. \n");
				instr = GRIPPERCLOSE;
				break;
			case 'C':
				strcpy(out_msg,"ConveyorOn pressed. \n");
				instr = CONVEYORON;
				break;
			case 'c':
				strcpy(out_msg,"ConveyorOFF pressed. \n");
				instr = CONVEYOROFF;
				break;
			case 'L':
				strcpy(out_msg,"UnloadLeft pressed. \n");
				instr = UNLOADLEFT;
				break;
			case 'l':
				strcpy(out_msg,"UnloadRight pressed. \n");
				instr = UNLOADRIGHT;
				break;
			case 'H':
			case 'h':
				strcpy(out_msg,"Home pressed. \n");
				instr = HOMEROBOT;
				break;
			case 'A':
				strcpy(out_msg,"AutomodeOn pressed. \n");
				instr = MANUALOFF;
				break;
			case 'a':
				strcpy(out_msg,"AutomodeOff pressed. \n");
				instr = MANUALON;
				break;
			case 'D':
			case 'd':
				strcpy(out_msg,"Display pressed. \n");
				readMsg(0,1);
				break;
			default:
				break;
		}
		if (out_msg[0]  != 'o')
		{
			printf(out_msg);
			flushall();
		}
		if (instr != 100)
		{
			last_input = instr;
			writeMsg(instr);
		}
		//start the timer
		if ((kbInput == 'B')||(kbInput == 'b')||(kbInput == 'S')||(kbInput == 's')||
			(kbInput == 'E')||(kbInput == 'e')||(kbInput == 'P')||(kbInput == 'p')||
			(kbInput == 'R')||(kbInput == 'r')||(kbInput == 'G')||(kbInput == 'g')||
			(kbInput == 'L')||(kbInput == 'l'))
		{
			timer_settime(timerid, 0, &timer,NULL);
		}
		delay(100);
	}
	return EXIT_SUCCESS;
}