Kart+xxxxx // Radar_RTOS
Dependencies: Radar_RTOS mbed
Fork of Radar_RTOS by
UART_Radar.cpp@3:422918db0559, 2016-01-15 (annotated)
- Committer:
- Alex_Hochart
- Date:
- Fri Jan 15 08:44:59 2016 +0000
- Revision:
- 3:422918db0559
- Parent:
- 2:97cbf2a5ec78
Kart+xxxx
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Alex_Hochart | 2:97cbf2a5ec78 | 1 | #include "UART_Radar.h" |
Alex_Hochart | 2:97cbf2a5ec78 | 2 | #include "mbed.h" |
Alex_Hochart | 2:97cbf2a5ec78 | 3 | #include <string.h> |
Alex_Hochart | 2:97cbf2a5ec78 | 4 | Serial carte(PA_9, PA_10); //emission --- tx, rx |
Alex_Hochart | 3:422918db0559 | 5 | |
Alex_Hochart | 2:97cbf2a5ec78 | 6 | |
Alex_Hochart | 2:97cbf2a5ec78 | 7 | void USART1_puts(char *text){ |
Alex_Hochart | 2:97cbf2a5ec78 | 8 | while(*text != '\0'){ |
Alex_Hochart | 2:97cbf2a5ec78 | 9 | |
Alex_Hochart | 2:97cbf2a5ec78 | 10 | if(carte.writeable()){ |
Alex_Hochart | 2:97cbf2a5ec78 | 11 | carte.putc(*text); |
Alex_Hochart | 2:97cbf2a5ec78 | 12 | text++; |
Alex_Hochart | 2:97cbf2a5ec78 | 13 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 14 | |
Alex_Hochart | 2:97cbf2a5ec78 | 15 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 16 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 17 | |
Alex_Hochart | 2:97cbf2a5ec78 | 18 | |
Alex_Hochart | 2:97cbf2a5ec78 | 19 | void format(char *msg, char *msg_formated){ |
Alex_Hochart | 2:97cbf2a5ec78 | 20 | int somme=5; |
Alex_Hochart | 2:97cbf2a5ec78 | 21 | int i=0; |
Alex_Hochart | 2:97cbf2a5ec78 | 22 | msg_formated[0]=2; |
Alex_Hochart | 3:422918db0559 | 23 | //pc.printf("\n\r"); |
Alex_Hochart | 2:97cbf2a5ec78 | 24 | while(msg[i]!=0){ |
Alex_Hochart | 2:97cbf2a5ec78 | 25 | somme= somme + msg[i]; |
Alex_Hochart | 2:97cbf2a5ec78 | 26 | msg_formated[i+1]=msg[i]; |
Alex_Hochart | 2:97cbf2a5ec78 | 27 | i++; |
Alex_Hochart | 2:97cbf2a5ec78 | 28 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 29 | if(somme>255){ |
Alex_Hochart | 2:97cbf2a5ec78 | 30 | somme++; |
Alex_Hochart | 2:97cbf2a5ec78 | 31 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 32 | somme=somme%256; |
Alex_Hochart | 2:97cbf2a5ec78 | 33 | msg_formated[i+1]=~somme; |
Alex_Hochart | 2:97cbf2a5ec78 | 34 | msg_formated[i+2]=3; |
Alex_Hochart | 2:97cbf2a5ec78 | 35 | msg_formated[i+3]=0; |
Alex_Hochart | 2:97cbf2a5ec78 | 36 | |
Alex_Hochart | 2:97cbf2a5ec78 | 37 | //A supprimer |
Alex_Hochart | 3:422918db0559 | 38 | /*i=0; |
Alex_Hochart | 2:97cbf2a5ec78 | 39 | while(msg_formated[i]!=0){ |
Alex_Hochart | 2:97cbf2a5ec78 | 40 | printf("[%d] ", msg_formated[i]); |
Alex_Hochart | 2:97cbf2a5ec78 | 41 | i++; |
Alex_Hochart | 3:422918db0559 | 42 | }*/ |
Alex_Hochart | 2:97cbf2a5ec78 | 43 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 44 | |
Alex_Hochart | 2:97cbf2a5ec78 | 45 | |
Alex_Hochart | 2:97cbf2a5ec78 | 46 | void send(char *data){ |
Alex_Hochart | 2:97cbf2a5ec78 | 47 | char trame[52]=""; |
Alex_Hochart | 2:97cbf2a5ec78 | 48 | format(data, trame); |
Alex_Hochart | 2:97cbf2a5ec78 | 49 | USART1_puts(trame); |
Alex_Hochart | 2:97cbf2a5ec78 | 50 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 51 | |
Alex_Hochart | 2:97cbf2a5ec78 | 52 | int receive(char *frame){ |
Alex_Hochart | 2:97cbf2a5ec78 | 53 | int I; |
Alex_Hochart | 2:97cbf2a5ec78 | 54 | unsigned int sommeBuffer; |
Alex_Hochart | 2:97cbf2a5ec78 | 55 | char r; |
Alex_Hochart | 2:97cbf2a5ec78 | 56 | Timer timeout; |
Alex_Hochart | 2:97cbf2a5ec78 | 57 | timeout.start(); |
Alex_Hochart | 2:97cbf2a5ec78 | 58 | while(1){ |
Alex_Hochart | 3:422918db0559 | 59 | if(timeout.read_ms() > 100) return 2; |
Alex_Hochart | 2:97cbf2a5ec78 | 60 | if(carte.readable()){ |
Alex_Hochart | 2:97cbf2a5ec78 | 61 | r = carte.getc(); |
Alex_Hochart | 2:97cbf2a5ec78 | 62 | |
Alex_Hochart | 2:97cbf2a5ec78 | 63 | switch(r){ |
Alex_Hochart | 2:97cbf2a5ec78 | 64 | case 2: //Start |
Alex_Hochart | 2:97cbf2a5ec78 | 65 | I=0; |
Alex_Hochart | 2:97cbf2a5ec78 | 66 | sommeBuffer=2; |
Alex_Hochart | 2:97cbf2a5ec78 | 67 | break; |
Alex_Hochart | 2:97cbf2a5ec78 | 68 | |
Alex_Hochart | 2:97cbf2a5ec78 | 69 | case 3: //Stop |
Alex_Hochart | 2:97cbf2a5ec78 | 70 | frame[I]=0; |
Alex_Hochart | 2:97cbf2a5ec78 | 71 | sommeBuffer+=3; |
Alex_Hochart | 2:97cbf2a5ec78 | 72 | |
Alex_Hochart | 2:97cbf2a5ec78 | 73 | if(sommeBuffer>255){ |
Alex_Hochart | 2:97cbf2a5ec78 | 74 | sommeBuffer++; |
Alex_Hochart | 2:97cbf2a5ec78 | 75 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 76 | sommeBuffer=~sommeBuffer; |
Alex_Hochart | 2:97cbf2a5ec78 | 77 | sommeBuffer=sommeBuffer%256; |
Alex_Hochart | 2:97cbf2a5ec78 | 78 | |
Alex_Hochart | 2:97cbf2a5ec78 | 79 | if(sommeBuffer==0){ //Les sommes concordent, les données sont valides |
Alex_Hochart | 2:97cbf2a5ec78 | 80 | frame[I-1]=0; |
Alex_Hochart | 2:97cbf2a5ec78 | 81 | return 0; |
Alex_Hochart | 2:97cbf2a5ec78 | 82 | }else{ //Message invalidé par la somme |
Alex_Hochart | 2:97cbf2a5ec78 | 83 | return 1; |
Alex_Hochart | 2:97cbf2a5ec78 | 84 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 85 | |
Alex_Hochart | 2:97cbf2a5ec78 | 86 | default : |
Alex_Hochart | 2:97cbf2a5ec78 | 87 | frame[I]=r; |
Alex_Hochart | 2:97cbf2a5ec78 | 88 | sommeBuffer+=r; |
Alex_Hochart | 2:97cbf2a5ec78 | 89 | I++; |
Alex_Hochart | 2:97cbf2a5ec78 | 90 | break; |
Alex_Hochart | 2:97cbf2a5ec78 | 91 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 92 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 93 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 94 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 95 | |
Alex_Hochart | 2:97cbf2a5ec78 | 96 | int controle(char *frame){ |
Alex_Hochart | 3:422918db0559 | 97 | if (*frame == 6) return 0; |
Alex_Hochart | 2:97cbf2a5ec78 | 98 | else return 1; |
Alex_Hochart | 2:97cbf2a5ec78 | 99 | } |