PSSS
/
ReadFromSerial446
nulla
main.cpp
- Committer:
- ironidio
- Date:
- 2018-07-30
- Revision:
- 1:fc463dd04a7f
- Parent:
- 0:b40deb141f99
- Child:
- 2:67223774f668
File content as of revision 1:fc463dd04a7f:
#include "mbed.h" #include <string> #include <algorithm> using namespace std; RawSerial pc(USBTX,USBRX); DigitalOut myled(LED2); //SPI spi(SPI_MOSI,SPI_MISO,SPI_SCK); //CAN3 can(spi,SPI_CS,PA_1); char data='A'; char vrx[1000]; //memorizzo i caratteri ricevuti dopo il comando di start '+' bool start=false; // true quando ho ricevuto il comando di start '+' bool stop=false; // true quando ho ricevuto il comando di stop '-' bool canread=false; //true per abilitare la lettura da can int i = 0; int j = 0; int k = 0; int i_row = 0; const char* FromStrToChar; size_t n,pos; string delimiter = ","; string paramlist[10]; void rxCallback(){ data = char(pc.getc()); if (data == '+'){ myled = 1; i=0; j=0; start=true; }else if(data == '-'){ myled=0; stop=true; start=false; canread=false; //disabilito la lettura da CAN //pc.puts("123?"); }else{ if(start){ //quando ricevo il terminatore del messaggio '?' if(data == '?'){//quando ricevo il terminatore del messaggio '?' //converto il vettore di char in string string strrx(vrx); //contro il numero di id che sono stati ricevuti contando le ',' n = count(strrx.begin(),strrx.end(),','); pos = 0; //faccio il parsing della stringa, salvando i diversi Id ricevuti in un vettore di stringhe while((pos = strrx.find(',')) != string::npos){ paramlist[i_row] = strrx.substr(0,pos); //temp[j] = paramlist[i_row]; strrx.erase(0,pos+1); i_row++; } canread=true; //abilito la lettura da CAN }else { //altrimenti memorizzo il carattere ricevuto vrx[i]=data; i++; } } } } int main() { pc.attach(&rxCallback, RawSerial::RxIrq); //TODO: trova un modo per uscire dal ciclo while della lettura CAN while(true){ if(canread){ //ToDo: devo leggere da CAN }else if (stop){ //ToDo: devo mandare tutto quello che ho letto sulla seriale pc.puts("101,20|101,20|101,20|101,20|101,20|259,1|101,20|101,20|101,20|101,20|101,20|259,3.0?"); stop=false; start=false; canread=false; } } }