
last version
Dependencies: LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI
Diff: main.cpp
- Revision:
- 2:e23243b26a23
- Parent:
- 1:d562d46c33b7
--- a/main.cpp Wed May 20 07:59:22 2020 +0000 +++ b/main.cpp Tue Jun 09 11:23:48 2020 +0000 @@ -1,30 +1,106 @@ #include "mbed.h" -#include "keyboard_ts_lcd.h" +#include "command_decoder.h" +#include "servo_gui.h" + +#define CR '\r' + +Serial MyUART(USBTX, USBRX,9600); +ServoGui MyServoGui; +CommandDecoder MyCommandDecoder; -int main() -{ - KeyboardTsLcd MyKeyboardTsLcd(1); - LedLcd MyLed(3); +uint8_t puts(char *cBufferTransmit, unsigned char ucBufferSize){ + unsigned char ucCharacterCounter; + + for(ucCharacterCounter = 0; ucCharacterCounter <= ucBufferSize; ucCharacterCounter++){ + if(cBufferTransmit[ucBufferSize] == NULL){ + break; + } + } + if(ucCharacterCounter == ucBufferSize){ + return 1; + } + + for(unsigned char ucCharacterCounter = 0; cBufferTransmit[ucCharacterCounter] != NULL; ucCharacterCounter++){ + MyUART.putc(cBufferTransmit[ucCharacterCounter]); + } + MyUART.putc(CR); + return 0; + } - while(1){ - switch(MyKeyboardTsLcd.eRead()){ - case BUTTON_0: - MyLed.On(3); +uint8_t gets(char *cBufferReceived, unsigned char ucBufferSize){ + unsigned char ucCharacterCounter = 0; + + while(ucCharacterCounter < ucBufferSize){ + cBufferReceived[ucCharacterCounter] = MyUART.getc(); + if(cBufferReceived[ucCharacterCounter] == CR){ + cBufferReceived[ucCharacterCounter] = NULL; + return 0; + } + ucCharacterCounter++; + } + return 1; +} + +void TokenHandling(){ + char cID[] = "id_0x777"; + char cUnkownCommand[] = "unknowncommand"; + char cOK[] = "ok"; + + if((MyCommandDecoder.ucTokenNr>0) && (MyCommandDecoder.asToken[0].eType == KEYWORD)){ + switch(MyCommandDecoder.asToken[0].uValue.eKeyword){ + case ID: + puts(cID); break; - case BUTTON_1: - MyLed.On(2); - break; - case BUTTON_2: - MyLed.On(1); - break; - case BUTTON_3: - MyLed.On(0); + case CALLIB: + MyServoGui.ServoCallib(); + puts(cOK); + break; + case GOTO: + if(MyCommandDecoder.asToken[1].eType == NUMBER){ + MyServoGui.ServoGoTo(MyCommandDecoder.asToken[1].uValue.uiNumber); + MyServoGui.sServo.uiPreviousPosition = MyCommandDecoder.asToken[1].uValue.uiNumber; + puts(cOK); + } + else{ + puts(cUnkownCommand); + } break; + case STEP: + if(MyCommandDecoder.asToken[1].eType == NUMBER){ + MyServoGui.ServoGoTo(MyServoGui.sServo.uiPreviousPosition + MyCommandDecoder.asToken[1].uValue.uiNumber); + MyServoGui.sServo.uiPreviousPosition = MyServoGui.sServo.uiPreviousPosition + MyCommandDecoder.asToken[1].uValue.uiNumber; + puts(cOK); + } + else{ + puts(cUnkownCommand); + } + break; default: - MyLed.On(4); - break; + puts(cUnkownCommand); + break; } - wait(0.1); - } + } + else { + puts(cUnkownCommand,sizeof(cUnkownCommand)); + } +} + +int main(){ + char cUnkownCommand[] = "unkowncommand"; + char cBufferReceived[10]; + + while(1){ + + if(gets(cBufferReceived,sizeof(cBufferReceived)) == 0){ + MyCommandDecoder.DecodeMsg(cBufferReceived); + TokenHandling(); + + } + else{ + puts(cUnkownCommand,sizeof(cUnkownCommand)); + } + + } } +