![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
для управления турелью
uart.cpp
- Committer:
- Yar
- Date:
- 2017-01-19
- Revision:
- 3:e47c0c98f515
- Parent:
- 2:a9d63ae515ad
File content as of revision 3:e47c0c98f515:
#include "uart.hpp" #include "mbed.h" //#include "rtos.h" #include <string> #include <stdlib.h> #include "main.hpp" #include "servo.hpp" #include "gun.hpp" #include "led_color.hpp" StateLed UartStateLed; using namespace std; // скорость UART const int baudRate = UART_BAUDRATE; // время обновления UART const int uartDelay = 10; //const int servoDigit = 10; Serial pc(PIN_UART_TX, PIN_UART_RX, baudRate); /* void uartThread(void const *argument) { while (true) { //Thread::wait(uartDelay); string inputData = ""; if (pc.readable() > 0) { while(true) { char p = pc.getc(); inputData = inputData + p; if(p == '\n' || p == '\r') { pc.printf("\n"); pc.printf(inputData.c_str()); pc.printf("\n"); break; } // if } // while if (inputData.length() > 3) if (inputData.substr(0, 3) == "get") { pc.printf("servo 0 %f\n", getServoAngle(0)); pc.printf("servo 1 %d\n", getServoAngle(1)); } else if (inputData.substr(0, 3) == "set" && inputData.length() > 13) { char* pEnd; double servoOne, servoTwo; // строка с командой string setdata = inputData.substr(0, 13); // строка с числом string numer = inputData.substr(14, inputData.length()); if (setdata == "set all angle") { servoOne = strtod(numer.c_str(), &pEnd); servoTwo = strtod(pEnd, NULL); setServoAngle(servoOne, 0); setServoAngle(servoTwo, 1); } else if (setdata == "set all speed") { servoOne = strtod(numer.c_str(), &pEnd); servoTwo = strtod(pEnd, NULL); setServoSpeed(servoOne, 0); setServoSpeed(servoTwo, 1); } else if (setdata == "set one speed") { servoOne = strtod(numer.c_str(), NULL); setServoSpeed(servoOne, 0); } else if (setdata == "set two speed") { servoTwo = strtod(numer.c_str(), NULL); setServoSpeed(servoTwo, 1); } else if (setdata == "set one angle") { servoOne = strtod(numer.c_str(), NULL); setServoAngle(servoOne, 0); } else if (setdata == "set two angle") { servoTwo = strtod(numer.c_str(), NULL); setServoAngle(servoTwo, 1); } } else if (inputData.length() >= 4 && inputData.substr(0, 4) == "shot") { shotGun(); } else if (inputData.length() >= 6 && inputData.substr(0, 6) == "gun on") { enabledGun(); } else if (inputData.length() >= 7 && inputData.substr(0, 7) == "gun off") { disabledGun(); } else if (inputData.length() >= 7 && inputData.substr(0, 7) == "led red") { UartStateLed.setLedRed(); } else if (inputData.length() >= 9 && inputData.substr(0, 9) == "led green") { UartStateLed.setLedRed(); } else if (inputData.length() >= 8 && inputData.substr(0, 8) == "led blue") { UartStateLed.setLedRed(); } else if (inputData.length() >= 8 && inputData.substr(0, 8) == "led null") { UartStateLed.setLedNull(); } else if (inputData.length() >= 9 && inputData.substr(0, 9) == "led white") { UartStateLed.setLedRed(); } } // if while(pc.readable() > 0) { char p = pc.getc(); } } } */ void uartUpdate(void) { string inputData = ""; if (pc.readable() > 0) { while(true) { char p = pc.getc(); inputData = inputData + p; if(p == '\n' || p == '\r') { pc.printf("\n"); pc.printf(inputData.c_str()); pc.printf("\n"); break; } // if } // while if (inputData.length() > 3) if (inputData.substr(0, 3) == "get") { pc.printf("servo 0 %f\n", getServoAngle(0)); pc.printf("servo 1 %d\n", getServoAngle(1)); } else if (inputData.substr(0, 3) == "set" && inputData.length() > 13) { char* pEnd; double servoOne, servoTwo; // строка с командой string setdata = inputData.substr(0, 13); // строка с числом string numer = inputData.substr(14, inputData.length()); if (setdata == "set all angle") { servoOne = strtod(numer.c_str(), &pEnd); servoTwo = strtod(pEnd, NULL); setServoAngle(servoOne, 0); setServoAngle(servoTwo, 1); } else if (setdata == "set all speed") { servoOne = strtod(numer.c_str(), &pEnd); servoTwo = strtod(pEnd, NULL); setServoSpeed(servoOne, 0); setServoSpeed(servoTwo, 1); } else if (setdata == "set one speed") { servoOne = strtod(numer.c_str(), NULL); setServoSpeed(servoOne, 0); } else if (setdata == "set two speed") { servoTwo = strtod(numer.c_str(), NULL); setServoSpeed(servoTwo, 1); } else if (setdata == "set one angle") { servoOne = strtod(numer.c_str(), NULL); setServoAngle(servoOne, 0); } else if (setdata == "set two angle") { servoTwo = strtod(numer.c_str(), NULL); setServoAngle(servoTwo, 1); } } else if (inputData.length() >= 4 && inputData.substr(0, 4) == "shot") { shotGun(); } else if (inputData.length() >= 6 && inputData.substr(0, 6) == "gun on") { enabledGun(); } else if (inputData.length() >= 7 && inputData.substr(0, 7) == "gun off") { disabledGun(); } else if (inputData.length() >= 7 && inputData.substr(0, 7) == "led red") { UartStateLed.setLedRed(); } else if (inputData.length() >= 9 && inputData.substr(0, 9) == "led green") { UartStateLed.setLedRed(); } else if (inputData.length() >= 8 && inputData.substr(0, 8) == "led blue") { UartStateLed.setLedRed(); } else if (inputData.length() >= 8 && inputData.substr(0, 8) == "led null") { UartStateLed.setLedNull(); } else if (inputData.length() >= 9 && inputData.substr(0, 9) == "led white") { UartStateLed.setLedRed(); } } // if while(pc.readable() > 0) { char p = pc.getc(); } //} }