![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Projecte final de Sistemes Encastats
Dependencies: Hc05 RawSerialPc mbed-rtos mbed
Diff: main.cpp
- Revision:
- 0:be638f6ee353
- Child:
- 1:c603de57c8b6
diff -r 000000000000 -r be638f6ee353 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Dec 16 14:48:28 2015 +0000 @@ -0,0 +1,125 @@ +#include "mbed.h" +#include "rtos.h" +#include <string> + +#define longString 128 + +class Pc : public RawSerial { + public: + Pc(PinName tx, PinName rx) : RawSerial(tx, rx){ + baud(115200); + }; + + void enviaString(char* str){ + int i = 0; + while((i < longString) && (str[i] != '\0')) { + putc(str[i]); + i++; + } + putc(10); + }; + + bool llegirString(char* str){ + if(readable()){ + int i= 0; + str[i] = getc(); + while((i < longString) && (str[i] != 13)) { + if (str[i] != '@') + i++; + str[i] = getc(); + } + str[i] = '\0'; + return true; + } + return false; + }; + + + }; + + class Hc05 : public RawSerial { + public: + //Mutex mutex; + Hc05(PinName tx, PinName rx) : RawSerial(tx, rx){ + baud(115200); + }; + + void enviaString(char* str){ + int i = 0; + while((i < longString) && (str[i] != '\0')) { + putc(str[i]); + i++; + } + putc(13); + }; + + + bool llegirString(char* str){ + if(readable()){ + char c = getc(); + int i = 0; + //mutex.lock(); + while((i < longString) && (c != 13)) { + if(c!='@'){ + str[i] = c; + i++; + } + c = getc(); + } + str[i] = '\0'; + //mutex.unlock(); + return true; + + } + return false; + }; + + void tractaString(char* str, int& mode, int& vel, int& ang){ + if ((str[0] == 'a') && (str[1] == 'v') && (str[2] == 'a') && (str[3] == 'n')) + mode = 1; + if ((str[0] == 'r') && (str[1] == 'o') && (str[2] == 't') && (str[3] == 'a')) + mode = 2; + if ((str[0] == 's') && (str[1] == 't') && (str[2] == 'o') && (str[3] == 'p')) + mode = 0; + if ((mode == 1) || (mode==2)){ + char svel[4], sang[4]; + for(int i = 0; i<=3;i++){ + sang[i] = str[i+5]; + svel[i] = str[i+9]; + } + sang[3] = svel[3] = '\0'; + vel = atoi(svel); + ang = atoi(sang); + } + }; + +}; + +Pc pc(USBTX, USBRX); +Hc05 bt(D8, D2); +char prova[longString] = "hola"; +char enviar[longString] = "enviar"; +int mode, vel, ang; + + +void llegir_thread(void const *args) { + while (true) { + //pc.enviaString(prova); + bt.llegirString(prova); + bt.tractaString(prova, mode, vel, ang); + Thread::wait(300); + } +} + +int main() { + mode = vel = ang = 0; + Thread thread(llegir_thread); + + while (true) { + pc.enviaString(prova); + if(vel==50) + pc.enviaString("VEL=50"); + + Thread::wait(1000); + } +} \ No newline at end of file