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

Dependencies:   mbed

Revision:
0:690effcc5be0
Child:
2:a9d63ae515ad
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uart.cpp	Sun Jan 15 22:16:03 2017 +0000
@@ -0,0 +1,87 @@
+#include "uart.hpp"
+#include "mbed.h"
+#include "rtos.h"
+#include <string> 
+#include <stdlib.h>
+#include "servo.hpp"
+#include "gun.hpp"
+
+using namespace std;
+// скорость UART
+const int baudRate = 115200;
+// время обновления UART
+const int uartDelay = 10;
+const int servoDigit = 10;
+
+Serial pc(SERIAL_TX, SERIAL_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.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") {
+                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.substr(0, 4) == "shot") {
+                shotGun();
+            } else
+            if (inputData.substr(0, 6) == "gun on") {
+                enabledGun();
+            } else
+            if (inputData.substr(0, 7) == "gun off") {
+                disabledGun();
+            }
+        } // if
+        while(pc.readable() > 0) {
+            char p = pc.getc(); 
+        }
+    }
+}
\ No newline at end of file