для управления турелью

Dependencies:   mbed

Committer:
Yar
Date:
Sun Jan 15 22:32:04 2017 +0000
Revision:
2:a9d63ae515ad
Parent:
0:690effcc5be0
Child:
3:e47c0c98f515
fix uart

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Yar 0:690effcc5be0 1 #include "uart.hpp"
Yar 0:690effcc5be0 2 #include "mbed.h"
Yar 0:690effcc5be0 3 #include "rtos.h"
Yar 0:690effcc5be0 4 #include <string>
Yar 0:690effcc5be0 5 #include <stdlib.h>
Yar 0:690effcc5be0 6 #include "servo.hpp"
Yar 0:690effcc5be0 7 #include "gun.hpp"
Yar 0:690effcc5be0 8
Yar 0:690effcc5be0 9 using namespace std;
Yar 0:690effcc5be0 10 // скорость UART
Yar 0:690effcc5be0 11 const int baudRate = 115200;
Yar 0:690effcc5be0 12 // время обновления UART
Yar 0:690effcc5be0 13 const int uartDelay = 10;
Yar 2:a9d63ae515ad 14 //const int servoDigit = 10;
Yar 0:690effcc5be0 15
Yar 0:690effcc5be0 16 Serial pc(SERIAL_TX, SERIAL_RX, baudRate);
Yar 0:690effcc5be0 17
Yar 0:690effcc5be0 18 void uartThread(void const *argument) {
Yar 0:690effcc5be0 19 while (true) {
Yar 0:690effcc5be0 20 Thread::wait(uartDelay);
Yar 0:690effcc5be0 21 string inputData = "";
Yar 0:690effcc5be0 22 if (pc.readable() > 0) {
Yar 0:690effcc5be0 23 while(true) {
Yar 0:690effcc5be0 24 char p = pc.getc();
Yar 0:690effcc5be0 25 inputData = inputData + p;
Yar 0:690effcc5be0 26 if(p == '\n' || p == '\r') {
Yar 0:690effcc5be0 27 pc.printf("\n");
Yar 0:690effcc5be0 28 pc.printf(inputData.c_str());
Yar 0:690effcc5be0 29 pc.printf("\n");
Yar 0:690effcc5be0 30 break;
Yar 0:690effcc5be0 31 } // if
Yar 0:690effcc5be0 32 } // while
Yar 0:690effcc5be0 33 if (inputData.substr(0, 3) == "get") {
Yar 0:690effcc5be0 34 pc.printf("servo 0 %f\n", getServoAngle(0));
Yar 0:690effcc5be0 35 pc.printf("servo 1 %d\n", getServoAngle(1));
Yar 0:690effcc5be0 36 } else
Yar 2:a9d63ae515ad 37 if (inputData.substr(0, 3) == "set" && inputData.length() > 13) {
Yar 0:690effcc5be0 38 char* pEnd;
Yar 0:690effcc5be0 39 double servoOne, servoTwo;
Yar 0:690effcc5be0 40 // строка с командой
Yar 0:690effcc5be0 41 string setdata = inputData.substr(0, 13);
Yar 0:690effcc5be0 42 // строка с числом
Yar 0:690effcc5be0 43 string numer = inputData.substr(14, inputData.length());
Yar 0:690effcc5be0 44 if (setdata == "set all angle") {
Yar 0:690effcc5be0 45 servoOne = strtod(numer.c_str(), &pEnd);
Yar 0:690effcc5be0 46 servoTwo = strtod(pEnd, NULL);
Yar 0:690effcc5be0 47 setServoAngle(servoOne, 0);
Yar 0:690effcc5be0 48 setServoAngle(servoTwo, 1);
Yar 0:690effcc5be0 49 } else
Yar 0:690effcc5be0 50 if (setdata == "set all speed") {
Yar 0:690effcc5be0 51 servoOne = strtod(numer.c_str(), &pEnd);
Yar 0:690effcc5be0 52 servoTwo = strtod(pEnd, NULL);
Yar 0:690effcc5be0 53 setServoSpeed(servoOne, 0);
Yar 0:690effcc5be0 54 setServoSpeed(servoTwo, 1);
Yar 0:690effcc5be0 55 } else
Yar 0:690effcc5be0 56 if (setdata == "set one speed") {
Yar 0:690effcc5be0 57 servoOne = strtod(numer.c_str(), NULL);
Yar 0:690effcc5be0 58 setServoSpeed(servoOne, 0);
Yar 0:690effcc5be0 59 } else
Yar 0:690effcc5be0 60 if (setdata == "set two speed") {
Yar 0:690effcc5be0 61 servoTwo = strtod(numer.c_str(), NULL);
Yar 0:690effcc5be0 62 setServoSpeed(servoTwo, 1);
Yar 0:690effcc5be0 63 } else
Yar 0:690effcc5be0 64 if (setdata == "set one angle") {
Yar 0:690effcc5be0 65 servoOne = strtod(numer.c_str(), NULL);
Yar 0:690effcc5be0 66 setServoAngle(servoOne, 0);
Yar 0:690effcc5be0 67 } else
Yar 0:690effcc5be0 68 if (setdata == "set two angle") {
Yar 0:690effcc5be0 69 servoTwo = strtod(numer.c_str(), NULL);
Yar 0:690effcc5be0 70 setServoAngle(servoTwo, 1);
Yar 0:690effcc5be0 71 }
Yar 0:690effcc5be0 72 } else
Yar 0:690effcc5be0 73 if (inputData.substr(0, 4) == "shot") {
Yar 0:690effcc5be0 74 shotGun();
Yar 0:690effcc5be0 75 } else
Yar 0:690effcc5be0 76 if (inputData.substr(0, 6) == "gun on") {
Yar 0:690effcc5be0 77 enabledGun();
Yar 0:690effcc5be0 78 } else
Yar 0:690effcc5be0 79 if (inputData.substr(0, 7) == "gun off") {
Yar 0:690effcc5be0 80 disabledGun();
Yar 0:690effcc5be0 81 }
Yar 0:690effcc5be0 82 } // if
Yar 0:690effcc5be0 83 while(pc.readable() > 0) {
Yar 0:690effcc5be0 84 char p = pc.getc();
Yar 0:690effcc5be0 85 }
Yar 0:690effcc5be0 86 }
Yar 0:690effcc5be0 87 }