Kart+xxxxx // Radar_RTOS
Dependencies: Radar_RTOS mbed
Fork of Radar_RTOS by
UART_Radar.cpp
- Committer:
- Alex_Hochart
- Date:
- 2015-12-02
- Revision:
- 2:97cbf2a5ec78
- Child:
- 3:422918db0559
File content as of revision 2:97cbf2a5ec78:
#include "UART_Radar.h" #include "mbed.h" #include <string.h> Serial carte(PA_9, PA_10); //emission --- tx, rx Serial pc(USBTX, USBRX); //reception --- tx, rx void USART1_puts(char *text){ while(*text != '\0'){ if(carte.writeable()){ carte.putc(*text); text++; } } } void format(char *msg, char *msg_formated){ int somme=5; int i=0; msg_formated[0]=2; printf("\n\r"); while(msg[i]!=0){ somme= somme + msg[i]; msg_formated[i+1]=msg[i]; i++; } if(somme>255){ somme++; } somme=somme%256; msg_formated[i+1]=~somme; msg_formated[i+2]=3; msg_formated[i+3]=0; //A supprimer i=0; while(msg_formated[i]!=0){ printf("[%d] ", msg_formated[i]); i++; } } void send(char *data){ char trame[52]=""; format(data, trame); USART1_puts(trame); } int receive(char *frame){ int I; unsigned int sommeBuffer; char r; Timer timeout; timeout.start(); while(1){ if(timeout.read_ms() > 100) return 1; if(carte.readable()){ r = carte.getc(); switch(r){ case 2: //Start I=0; sommeBuffer=2; break; case 3: //Stop frame[I]=0; sommeBuffer+=3; if(sommeBuffer>255){ sommeBuffer++; } sommeBuffer=~sommeBuffer; sommeBuffer=sommeBuffer%256; if(sommeBuffer==0){ //Les sommes concordent, les données sont valides frame[I-1]=0; return 0; }else{ //Message invalidé par la somme frame[0]=0; return 1; } default : frame[I]=r; sommeBuffer+=r; I++; break; } } } } int controle(char *frame){ if (*frame!=6) return 0; else return 1; }