Radar_RTOS
Dependencies: mbed
Fork of Nucleo_radar_buz by
UART_Radar.cpp
00001 #include "UART_Radar.h" 00002 #include "mbed.h" 00003 #include <string.h> 00004 Serial carte(PA_9, PA_10); //emission --- tx, rx 00005 Serial pc(USBTX, USBRX); //reception --- tx, rx 00006 00007 void USART1_puts(char *text){ 00008 while(*text != '\0'){ 00009 00010 if(carte.writeable()){ 00011 carte.putc(*text); 00012 text++; 00013 } 00014 00015 } 00016 } 00017 00018 00019 void format(char *msg, char *msg_formated){ 00020 int somme=5; 00021 int i=0; 00022 msg_formated[0]=2; 00023 printf("\n\r"); 00024 while(msg[i]!=0){ 00025 somme= somme + msg[i]; 00026 msg_formated[i+1]=msg[i]; 00027 i++; 00028 } 00029 if(somme>255){ 00030 somme++; 00031 } 00032 somme=somme%256; 00033 msg_formated[i+1]=~somme; 00034 msg_formated[i+2]=3; 00035 msg_formated[i+3]=0; 00036 00037 //A supprimer 00038 i=0; 00039 while(msg_formated[i]!=0){ 00040 printf("[%d] ", msg_formated[i]); 00041 i++; 00042 } 00043 } 00044 00045 00046 void send(char *data){ 00047 char trame[52]=""; 00048 format(data, trame); 00049 USART1_puts(trame); 00050 } 00051 00052 int receive(char *frame){ 00053 int I; 00054 unsigned int sommeBuffer; 00055 char r; 00056 Timer timeout; 00057 timeout.start(); 00058 while(1){ 00059 if(timeout.read_ms() > 100) return 1; 00060 if(carte.readable()){ 00061 r = carte.getc(); 00062 00063 switch(r){ 00064 case 2: //Start 00065 I=0; 00066 sommeBuffer=2; 00067 break; 00068 00069 case 3: //Stop 00070 frame[I]=0; 00071 sommeBuffer+=3; 00072 00073 if(sommeBuffer>255){ 00074 sommeBuffer++; 00075 } 00076 sommeBuffer=~sommeBuffer; 00077 sommeBuffer=sommeBuffer%256; 00078 00079 if(sommeBuffer==0){ //Les sommes concordent, les données sont valides 00080 frame[I-1]=0; 00081 return 0; 00082 }else{ //Message invalidé par la somme 00083 frame[0]=0; 00084 return 1; 00085 } 00086 00087 default : 00088 frame[I]=r; 00089 sommeBuffer+=r; 00090 I++; 00091 break; 00092 } 00093 } 00094 } 00095 } 00096 00097 int controle(char *frame){ 00098 if (*frame!=6) return 0; 00099 else return 1; 00100 }
Generated on Thu Jul 21 2022 01:30:05 by 1.7.2