ok

Dependencies:   mbed

main.cpp

Committer:
stersky
Date:
2019-02-12
Revision:
0:6c60dedc1d7a

File content as of revision 0:6c60dedc1d7a:

#include "mbed.h"

Serial centrale(p9,p10);
Serial PC(USBTX,USBRX);

void lecture_centrale(int *ptr1, int *ptr2);

int main() {
    int vitesse,gouvernail;
    centrale.baud(9600);
    PC.baud(460800);
    
    while(1) {
        lecture_centrale(&vitesse,&gouvernail);
        PC.printf("Vmoteur : %d\n\rDirMoteur : %d\n\r",vitesse,gouvernail);
    }
}

void lecture_centrale(int* ptr1, int* ptr2)
{
    char fin=0;
    char etat = 0;
    char a,i=0;
    char buffer[30];
    
    while(fin==0)
    {
if (centrale.readable()) 
        {  // attention PC.readable reste à 1 tant qu'il n'y a pas eu de getc qui vide le buffer
            a=centrale.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,"$%d|%d*",ptr1,ptr2);
                fin = 1;
                i=0;
                etat=0;
            }
            break;
            
            default :
            etat = 0;
            break;
            

           }
           }
           }
           }