Etienne Stransky
/
E_Communication_central
ok
Diff: main.cpp
- Revision:
- 0:33f12c4938ba
diff -r 000000000000 -r 33f12c4938ba main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Jan 27 20:48:32 2019 +0000 @@ -0,0 +1,78 @@ +#include "mbed.h" + +Serial energie(p28, p27); +Serial moteurs(p9, p10); + +Serial PC(USBTX,USBRX); + +void lecture_energie(double* ptr1); +void ecriture_moteurs(int vitesse); + +int main() { + double niveau = 0; + int vitesse=7; + + moteurs.baud(9600); + energie.baud(9600); + PC.baud(460800); + + while(1) { + //lecture_energie(&niveau);//attention:on reste dans lecture_energie tant qu'on n'a pas la trame en entier + ecriture_moteurs(vitesse); + PC.printf("Niveau : %lf\n\r",niveau); + vitesse++; + wait(0.2); + } +} + +void ecriture_moteurs(int vitesse) +{ + moteurs.printf("$%d*",vitesse); +} + + +void lecture_energie(double* ptr1) +{ + char fin=0; + char etat = 0; + char a,i=0; + char buffer[17]; + + while(fin==0) + { +if (energie.readable()) + { // attention PC.readable reste à 1 tant qu'il n'y a pas eu de getc qui vide le buffer + a=energie.getc(); + + switch(etat) + { + case 0 : + if(a=='$')//On attend le début d'une trame + { + buffer[0] = '$'; + i=1; + etat = 1; + } + break; + + case 1 ://Après le début d'une trame, on récupère la trame en entier et on l'analyse + buffer[i] = a; + i++; + if(a=='*') + { + sscanf(buffer,"$%lf*",ptr1); + fin = 1; + i=0; + etat=0; + } + break; + + default : + etat = 0; + break; + + + } + } + } + } \ No newline at end of file