olivier kouadio
/
STM32_Blink_LED
Convertisseur de code morse Morse code converter
main.cpp@0:2173fcfdaac6, 2019-06-06 (annotated)
- Committer:
- olivier14750
- Date:
- Thu Jun 06 21:43:44 2019 +0000
- Revision:
- 0:2173fcfdaac6
Convertisseur de code morse
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
olivier14750 | 0:2173fcfdaac6 | 1 | #include "mbed.h" |
olivier14750 | 0:2173fcfdaac6 | 2 | #include <string> |
olivier14750 | 0:2173fcfdaac6 | 3 | |
olivier14750 | 0:2173fcfdaac6 | 4 | #include "LCD_DISCO_F746NG.h" |
olivier14750 | 0:2173fcfdaac6 | 5 | #include "TS_DISCO_F746NG.h" |
olivier14750 | 0:2173fcfdaac6 | 6 | #include "F746_GUI.hpp" |
olivier14750 | 0:2173fcfdaac6 | 7 | #define Seuil 0.9 |
olivier14750 | 0:2173fcfdaac6 | 8 | |
olivier14750 | 0:2173fcfdaac6 | 9 | #define SeuilMinTimeP 70 |
olivier14750 | 0:2173fcfdaac6 | 10 | #define SeuilMaxTimeP 250 |
olivier14750 | 0:2173fcfdaac6 | 11 | |
olivier14750 | 0:2173fcfdaac6 | 12 | #define SeuilMaxTimeEL 600 |
olivier14750 | 0:2173fcfdaac6 | 13 | #define SeuilMAXTimeEM 2000 |
olivier14750 | 0:2173fcfdaac6 | 14 | |
olivier14750 | 0:2173fcfdaac6 | 15 | bool etat_precedent; |
olivier14750 | 0:2173fcfdaac6 | 16 | int TabTemps[100]; |
olivier14750 | 0:2173fcfdaac6 | 17 | |
olivier14750 | 0:2173fcfdaac6 | 18 | char morse[100]; |
olivier14750 | 0:2173fcfdaac6 | 19 | int index_morse = 0; |
olivier14750 | 0:2173fcfdaac6 | 20 | int check = 1; |
olivier14750 | 0:2173fcfdaac6 | 21 | int flagBPReco = 0; |
olivier14750 | 0:2173fcfdaac6 | 22 | |
olivier14750 | 0:2173fcfdaac6 | 23 | using namespace std; |
olivier14750 | 0:2173fcfdaac6 | 24 | |
olivier14750 | 0:2173fcfdaac6 | 25 | //Déclaration de la base de donnée morse |
olivier14750 | 0:2173fcfdaac6 | 26 | |
olivier14750 | 0:2173fcfdaac6 | 27 | static char *ListCara[36]= {".-", |
olivier14750 | 0:2173fcfdaac6 | 28 | "-...", |
olivier14750 | 0:2173fcfdaac6 | 29 | "-.-.", |
olivier14750 | 0:2173fcfdaac6 | 30 | "-..", |
olivier14750 | 0:2173fcfdaac6 | 31 | ".", |
olivier14750 | 0:2173fcfdaac6 | 32 | "..-.", |
olivier14750 | 0:2173fcfdaac6 | 33 | "--.", |
olivier14750 | 0:2173fcfdaac6 | 34 | "....", |
olivier14750 | 0:2173fcfdaac6 | 35 | "..", |
olivier14750 | 0:2173fcfdaac6 | 36 | ".---", |
olivier14750 | 0:2173fcfdaac6 | 37 | "-.-", |
olivier14750 | 0:2173fcfdaac6 | 38 | ".-..", |
olivier14750 | 0:2173fcfdaac6 | 39 | "--", |
olivier14750 | 0:2173fcfdaac6 | 40 | "-.", |
olivier14750 | 0:2173fcfdaac6 | 41 | "---", |
olivier14750 | 0:2173fcfdaac6 | 42 | ".--.", |
olivier14750 | 0:2173fcfdaac6 | 43 | "--.-", |
olivier14750 | 0:2173fcfdaac6 | 44 | ".-.", |
olivier14750 | 0:2173fcfdaac6 | 45 | "...", |
olivier14750 | 0:2173fcfdaac6 | 46 | "-", |
olivier14750 | 0:2173fcfdaac6 | 47 | "..-", |
olivier14750 | 0:2173fcfdaac6 | 48 | "...-", |
olivier14750 | 0:2173fcfdaac6 | 49 | ".--", |
olivier14750 | 0:2173fcfdaac6 | 50 | "-..-", |
olivier14750 | 0:2173fcfdaac6 | 51 | "-.--", |
olivier14750 | 0:2173fcfdaac6 | 52 | "--..", |
olivier14750 | 0:2173fcfdaac6 | 53 | ".----", |
olivier14750 | 0:2173fcfdaac6 | 54 | "..---", |
olivier14750 | 0:2173fcfdaac6 | 55 | "...--", |
olivier14750 | 0:2173fcfdaac6 | 56 | "....-", |
olivier14750 | 0:2173fcfdaac6 | 57 | ".....", |
olivier14750 | 0:2173fcfdaac6 | 58 | "-....", |
olivier14750 | 0:2173fcfdaac6 | 59 | "--...", |
olivier14750 | 0:2173fcfdaac6 | 60 | "---..", |
olivier14750 | 0:2173fcfdaac6 | 61 | "----.", |
olivier14750 | 0:2173fcfdaac6 | 62 | "-----" |
olivier14750 | 0:2173fcfdaac6 | 63 | }; |
olivier14750 | 0:2173fcfdaac6 | 64 | |
olivier14750 | 0:2173fcfdaac6 | 65 | char ListLettre[36]= {'a', |
olivier14750 | 0:2173fcfdaac6 | 66 | 'b', |
olivier14750 | 0:2173fcfdaac6 | 67 | 'c', |
olivier14750 | 0:2173fcfdaac6 | 68 | 'd', |
olivier14750 | 0:2173fcfdaac6 | 69 | 'e', |
olivier14750 | 0:2173fcfdaac6 | 70 | 'f', |
olivier14750 | 0:2173fcfdaac6 | 71 | 'g', |
olivier14750 | 0:2173fcfdaac6 | 72 | 'h', |
olivier14750 | 0:2173fcfdaac6 | 73 | 'i', |
olivier14750 | 0:2173fcfdaac6 | 74 | 'j', |
olivier14750 | 0:2173fcfdaac6 | 75 | 'k', |
olivier14750 | 0:2173fcfdaac6 | 76 | 'l', |
olivier14750 | 0:2173fcfdaac6 | 77 | 'm', |
olivier14750 | 0:2173fcfdaac6 | 78 | 'n', |
olivier14750 | 0:2173fcfdaac6 | 79 | 'o', |
olivier14750 | 0:2173fcfdaac6 | 80 | 'p', |
olivier14750 | 0:2173fcfdaac6 | 81 | 'q', |
olivier14750 | 0:2173fcfdaac6 | 82 | 'r', |
olivier14750 | 0:2173fcfdaac6 | 83 | 's', |
olivier14750 | 0:2173fcfdaac6 | 84 | 't', |
olivier14750 | 0:2173fcfdaac6 | 85 | 'u', |
olivier14750 | 0:2173fcfdaac6 | 86 | 'v', |
olivier14750 | 0:2173fcfdaac6 | 87 | 'w', |
olivier14750 | 0:2173fcfdaac6 | 88 | 'x', |
olivier14750 | 0:2173fcfdaac6 | 89 | 'y', |
olivier14750 | 0:2173fcfdaac6 | 90 | 'z', |
olivier14750 | 0:2173fcfdaac6 | 91 | '1', |
olivier14750 | 0:2173fcfdaac6 | 92 | '2', |
olivier14750 | 0:2173fcfdaac6 | 93 | '3', |
olivier14750 | 0:2173fcfdaac6 | 94 | '4', |
olivier14750 | 0:2173fcfdaac6 | 95 | '5', |
olivier14750 | 0:2173fcfdaac6 | 96 | '6', |
olivier14750 | 0:2173fcfdaac6 | 97 | '7', |
olivier14750 | 0:2173fcfdaac6 | 98 | '8', |
olivier14750 | 0:2173fcfdaac6 | 99 | '9', |
olivier14750 | 0:2173fcfdaac6 | 100 | '0' |
olivier14750 | 0:2173fcfdaac6 | 101 | }; |
olivier14750 | 0:2173fcfdaac6 | 102 | |
olivier14750 | 0:2173fcfdaac6 | 103 | |
olivier14750 | 0:2173fcfdaac6 | 104 | Timer t; |
olivier14750 | 0:2173fcfdaac6 | 105 | DigitalOut led(LED1); |
olivier14750 | 0:2173fcfdaac6 | 106 | AnalogIn AnaIn(PF_10); |
olivier14750 | 0:2173fcfdaac6 | 107 | DigitalIn BP(USER_BUTTON); |
olivier14750 | 0:2173fcfdaac6 | 108 | Serial pc(USBTX, USBRX); // tx, rx |
olivier14750 | 0:2173fcfdaac6 | 109 | |
olivier14750 | 0:2173fcfdaac6 | 110 | TS_DISCO_F746NG ts; |
olivier14750 | 0:2173fcfdaac6 | 111 | LCD_DISCO_F746NG lcd; |
olivier14750 | 0:2173fcfdaac6 | 112 | |
olivier14750 | 0:2173fcfdaac6 | 113 | //Bouton utilisés pour le control du convertisseur morse |
olivier14750 | 0:2173fcfdaac6 | 114 | // Pour les couleurs, dans l'ordre on a la couleur du text, la couleure du fond d'écran et la couleur du bouton |
olivier14750 | 0:2173fcfdaac6 | 115 | Button Commencer(50,100,100,100,"BEGIN",Font12,LCD_COLOR_BLACK,LCD_COLOR_BLUE,LCD_COLOR_WHITE); |
olivier14750 | 0:2173fcfdaac6 | 116 | Button Arrete(195,100,100,100,"STOP",Font12,LCD_COLOR_BLACK,LCD_COLOR_BLUE,LCD_COLOR_WHITE); |
olivier14750 | 0:2173fcfdaac6 | 117 | Button Recommencer(340,100,100,100,"RESTART",Font12,LCD_COLOR_BLACK,LCD_COLOR_BLUE,LCD_COLOR_WHITE); |
olivier14750 | 0:2173fcfdaac6 | 118 | |
olivier14750 | 0:2173fcfdaac6 | 119 | |
olivier14750 | 0:2173fcfdaac6 | 120 | int main() |
olivier14750 | 0:2173fcfdaac6 | 121 | { |
olivier14750 | 0:2173fcfdaac6 | 122 | float LDR; |
olivier14750 | 0:2173fcfdaac6 | 123 | bool etat; |
olivier14750 | 0:2173fcfdaac6 | 124 | int index_TabTemps = 0; |
olivier14750 | 0:2173fcfdaac6 | 125 | int index_Temps = 0; |
olivier14750 | 0:2173fcfdaac6 | 126 | int index_TabCara = 0; |
olivier14750 | 0:2173fcfdaac6 | 127 | int i, Temps[100][2]; |
olivier14750 | 0:2173fcfdaac6 | 128 | lcd.SetTextColor(LCD_COLOR_BLACK); |
olivier14750 | 0:2173fcfdaac6 | 129 | |
olivier14750 | 0:2173fcfdaac6 | 130 | unsigned char morse_decode[200]; |
olivier14750 | 0:2173fcfdaac6 | 131 | int index_morse_decode = 0; |
olivier14750 | 0:2173fcfdaac6 | 132 | char cara[6]; |
olivier14750 | 0:2173fcfdaac6 | 133 | int index_cara=0; |
olivier14750 | 0:2173fcfdaac6 | 134 | etat_precedent = false; |
olivier14750 | 0:2173fcfdaac6 | 135 | |
olivier14750 | 0:2173fcfdaac6 | 136 | t.start(); |
olivier14750 | 0:2173fcfdaac6 | 137 | while(Commencer.Touched()!=true);// On clique sur la touche "commencer" pour commencer l'enregistrement |
olivier14750 | 0:2173fcfdaac6 | 138 | |
olivier14750 | 0:2173fcfdaac6 | 139 | lcd.DisplayStringAt(0,LINE(1),(uint8_t *)"En cours...",CENTER_MODE); |
olivier14750 | 0:2173fcfdaac6 | 140 | while(1) { |
olivier14750 | 0:2173fcfdaac6 | 141 | |
olivier14750 | 0:2173fcfdaac6 | 142 | LDR= AnaIn.read(); // Lecture de la valeur analogique |
olivier14750 | 0:2173fcfdaac6 | 143 | pc.printf("LDR = %.2f\n\r",LDR); |
olivier14750 | 0:2173fcfdaac6 | 144 | if(LDR>Seuil) { //Si la valeur analogique dépasse le seuil, cela veut dire que la lumière est détecter sinon pas de lumière |
olivier14750 | 0:2173fcfdaac6 | 145 | |
olivier14750 | 0:2173fcfdaac6 | 146 | etat = true; |
olivier14750 | 0:2173fcfdaac6 | 147 | |
olivier14750 | 0:2173fcfdaac6 | 148 | } |
olivier14750 | 0:2173fcfdaac6 | 149 | |
olivier14750 | 0:2173fcfdaac6 | 150 | else |
olivier14750 | 0:2173fcfdaac6 | 151 | |
olivier14750 | 0:2173fcfdaac6 | 152 | { |
olivier14750 | 0:2173fcfdaac6 | 153 | etat = false; |
olivier14750 | 0:2173fcfdaac6 | 154 | |
olivier14750 | 0:2173fcfdaac6 | 155 | } |
olivier14750 | 0:2173fcfdaac6 | 156 | |
olivier14750 | 0:2173fcfdaac6 | 157 | if(etat !=etat_precedent) { // Si l'état actuel est différent de l'état précédent |
olivier14750 | 0:2173fcfdaac6 | 158 | pc.printf("get time\n\r"); |
olivier14750 | 0:2173fcfdaac6 | 159 | TabTemps[index_TabTemps]= t.read_ms(); // Lecture du temps |
olivier14750 | 0:2173fcfdaac6 | 160 | index_TabTemps++; |
olivier14750 | 0:2173fcfdaac6 | 161 | // On indique ici si le temps stocké précédement était une partie du code morse ou pas |
olivier14750 | 0:2173fcfdaac6 | 162 | if(etat==true) { |
olivier14750 | 0:2173fcfdaac6 | 163 | Temps[index_Temps][0] = 1; |
olivier14750 | 0:2173fcfdaac6 | 164 | index_Temps++; |
olivier14750 | 0:2173fcfdaac6 | 165 | } else { |
olivier14750 | 0:2173fcfdaac6 | 166 | Temps[index_Temps][0] = 0; |
olivier14750 | 0:2173fcfdaac6 | 167 | index_Temps++; |
olivier14750 | 0:2173fcfdaac6 | 168 | } |
olivier14750 | 0:2173fcfdaac6 | 169 | |
olivier14750 | 0:2173fcfdaac6 | 170 | } else { |
olivier14750 | 0:2173fcfdaac6 | 171 | pc.printf("no\n\r"); |
olivier14750 | 0:2173fcfdaac6 | 172 | |
olivier14750 | 0:2173fcfdaac6 | 173 | } |
olivier14750 | 0:2173fcfdaac6 | 174 | etat_precedent = etat; |
olivier14750 | 0:2173fcfdaac6 | 175 | |
olivier14750 | 0:2173fcfdaac6 | 176 | if(Arrete.Touched()==true) { // Si la touche "Arreter est apuyer, on arrete l'enregistrement pour passer au décodage |
olivier14750 | 0:2173fcfdaac6 | 177 | |
olivier14750 | 0:2173fcfdaac6 | 178 | |
olivier14750 | 0:2173fcfdaac6 | 179 | lcd.ClearStringLine(1); |
olivier14750 | 0:2173fcfdaac6 | 180 | |
olivier14750 | 0:2173fcfdaac6 | 181 | //ici, on récupère tous les temps qu'on a lus pour optenir les temps correspondant au code morse |
olivier14750 | 0:2173fcfdaac6 | 182 | for( i = 0; i<index_TabTemps; i++) { |
olivier14750 | 0:2173fcfdaac6 | 183 | Temps[i][1] = TabTemps[i+1] - TabTemps[i]; |
olivier14750 | 0:2173fcfdaac6 | 184 | } |
olivier14750 | 0:2173fcfdaac6 | 185 | |
olivier14750 | 0:2173fcfdaac6 | 186 | |
olivier14750 | 0:2173fcfdaac6 | 187 | for( i = 0; i<index_Temps; i++) { |
olivier14750 | 0:2173fcfdaac6 | 188 | // On vérifie chaque temps correspondant à un bout du code morse pour savoir si c'était un point ou un tirait |
olivier14750 | 0:2173fcfdaac6 | 189 | if(Temps[i][0] ==1) { |
olivier14750 | 0:2173fcfdaac6 | 190 | if(Temps[i][1]<SeuilMaxTimeP) { |
olivier14750 | 0:2173fcfdaac6 | 191 | morse[index_TabCara] = '.'; |
olivier14750 | 0:2173fcfdaac6 | 192 | |
olivier14750 | 0:2173fcfdaac6 | 193 | pc.printf("%c",morse[index_TabCara]); |
olivier14750 | 0:2173fcfdaac6 | 194 | index_TabCara++; |
olivier14750 | 0:2173fcfdaac6 | 195 | } else { |
olivier14750 | 0:2173fcfdaac6 | 196 | morse[index_TabCara] = '-'; |
olivier14750 | 0:2173fcfdaac6 | 197 | |
olivier14750 | 0:2173fcfdaac6 | 198 | pc.printf("%c",morse[index_TabCara]); |
olivier14750 | 0:2173fcfdaac6 | 199 | index_TabCara++; |
olivier14750 | 0:2173fcfdaac6 | 200 | } |
olivier14750 | 0:2173fcfdaac6 | 201 | } else { |
olivier14750 | 0:2173fcfdaac6 | 202 | //Si le temps ne correspondait pas à bout du code morse, trois cas de figure se présente à nous : |
olivier14750 | 0:2173fcfdaac6 | 203 | if(Temps[i][1]<SeuilMaxTimeP) { |
olivier14750 | 0:2173fcfdaac6 | 204 | //Ici, on ne fait rien. Cela veut dire que le caractère n'est pas encore complet |
olivier14750 | 0:2173fcfdaac6 | 205 | } else if(Temps[i][1]<SeuilMaxTimeEL) { |
olivier14750 | 0:2173fcfdaac6 | 206 | morse[index_TabCara] = '*'; |
olivier14750 | 0:2173fcfdaac6 | 207 | index_TabCara++; |
olivier14750 | 0:2173fcfdaac6 | 208 | //Ici, cela veut dire que le temps correspond à un espacemeent entre deux lettres. Donc on ajoute une étoile pour marquer la fin du caractère |
olivier14750 | 0:2173fcfdaac6 | 209 | } else if (Temps[i][1]<SeuilMAXTimeEM) { |
olivier14750 | 0:2173fcfdaac6 | 210 | |
olivier14750 | 0:2173fcfdaac6 | 211 | morse[index_TabCara] = ' '; |
olivier14750 | 0:2173fcfdaac6 | 212 | index_TabCara++; |
olivier14750 | 0:2173fcfdaac6 | 213 | //Ici, cela signifie que le mot est terminé. On met donc un espace pour pouvoir decoder le prochain mot. |
olivier14750 | 0:2173fcfdaac6 | 214 | |
olivier14750 | 0:2173fcfdaac6 | 215 | } |
olivier14750 | 0:2173fcfdaac6 | 216 | } |
olivier14750 | 0:2173fcfdaac6 | 217 | } |
olivier14750 | 0:2173fcfdaac6 | 218 | morse[index_TabCara]+='*'; |
olivier14750 | 0:2173fcfdaac6 | 219 | index_TabCara++; |
olivier14750 | 0:2173fcfdaac6 | 220 | pc.printf("%d\n\r",index_TabCara); |
olivier14750 | 0:2173fcfdaac6 | 221 | |
olivier14750 | 0:2173fcfdaac6 | 222 | pc.printf("code morse : %s\n\r",morse); |
olivier14750 | 0:2173fcfdaac6 | 223 | |
olivier14750 | 0:2173fcfdaac6 | 224 | //Nous procédons ici au decodage lettre par lettre |
olivier14750 | 0:2173fcfdaac6 | 225 | |
olivier14750 | 0:2173fcfdaac6 | 226 | for(i=0; i<index_TabCara; i++) { |
olivier14750 | 0:2173fcfdaac6 | 227 | |
olivier14750 | 0:2173fcfdaac6 | 228 | |
olivier14750 | 0:2173fcfdaac6 | 229 | if(morse[i]== ' ') { |
olivier14750 | 0:2173fcfdaac6 | 230 | //Si le caractère rencontré est un espace, tu decode le code morse dans la variable cara qui correspond à un caractère |
olivier14750 | 0:2173fcfdaac6 | 231 | for(int j=0; j<36; j++) { |
olivier14750 | 0:2173fcfdaac6 | 232 | if(strcmp(ListCara[j], cara) == 0) {// On compare le code morse cara a notre basse de donnée. Si il reconnait le caractère, tu l'ajoutes à la chaine de caractère finale |
olivier14750 | 0:2173fcfdaac6 | 233 | morse_decode[index_morse_decode]= ListLettre[j]; |
olivier14750 | 0:2173fcfdaac6 | 234 | index_morse_decode++; |
olivier14750 | 0:2173fcfdaac6 | 235 | check = 0; |
olivier14750 | 0:2173fcfdaac6 | 236 | |
olivier14750 | 0:2173fcfdaac6 | 237 | } |
olivier14750 | 0:2173fcfdaac6 | 238 | } |
olivier14750 | 0:2173fcfdaac6 | 239 | //Si il ne reconnait pas le caractère, alors tu ajoutes un point d'intérogation à ta chaine de caractère |
olivier14750 | 0:2173fcfdaac6 | 240 | if(check!=0) { |
olivier14750 | 0:2173fcfdaac6 | 241 | morse_decode[index_morse_decode]= '?'; |
olivier14750 | 0:2173fcfdaac6 | 242 | index_morse_decode++; |
olivier14750 | 0:2173fcfdaac6 | 243 | } |
olivier14750 | 0:2173fcfdaac6 | 244 | //On remet à zero la variable 'cara' pour decoder le prochain caractère |
olivier14750 | 0:2173fcfdaac6 | 245 | for (int y=0;y<6;y++){ |
olivier14750 | 0:2173fcfdaac6 | 246 | cara[y] = ' '; |
olivier14750 | 0:2173fcfdaac6 | 247 | |
olivier14750 | 0:2173fcfdaac6 | 248 | } |
olivier14750 | 0:2173fcfdaac6 | 249 | index_cara=0; |
olivier14750 | 0:2173fcfdaac6 | 250 | morse_decode[index_morse_decode]= ' '; |
olivier14750 | 0:2173fcfdaac6 | 251 | index_morse_decode++; |
olivier14750 | 0:2173fcfdaac6 | 252 | |
olivier14750 | 0:2173fcfdaac6 | 253 | } else if(morse[i]=='*') { |
olivier14750 | 0:2173fcfdaac6 | 254 | //Si le caractère rencontré est une étoile, tu decode le code morse dans la variable cara qui correspond à un caractère |
olivier14750 | 0:2173fcfdaac6 | 255 | for(int j=0; j<36; j++) { |
olivier14750 | 0:2173fcfdaac6 | 256 | if(strcmp(ListCara[j], cara) == 0) { |
olivier14750 | 0:2173fcfdaac6 | 257 | morse_decode[index_morse_decode]= ListLettre[j]; |
olivier14750 | 0:2173fcfdaac6 | 258 | index_morse_decode++; |
olivier14750 | 0:2173fcfdaac6 | 259 | |
olivier14750 | 0:2173fcfdaac6 | 260 | check = 0; |
olivier14750 | 0:2173fcfdaac6 | 261 | |
olivier14750 | 0:2173fcfdaac6 | 262 | } |
olivier14750 | 0:2173fcfdaac6 | 263 | } |
olivier14750 | 0:2173fcfdaac6 | 264 | if(check!=0) { |
olivier14750 | 0:2173fcfdaac6 | 265 | morse_decode[index_morse_decode]= '?'; |
olivier14750 | 0:2173fcfdaac6 | 266 | index_morse_decode++; |
olivier14750 | 0:2173fcfdaac6 | 267 | } |
olivier14750 | 0:2173fcfdaac6 | 268 | for (int y=0;y<6;y++){ |
olivier14750 | 0:2173fcfdaac6 | 269 | cara[y] = ' '; |
olivier14750 | 0:2173fcfdaac6 | 270 | index_cara=0; |
olivier14750 | 0:2173fcfdaac6 | 271 | } |
olivier14750 | 0:2173fcfdaac6 | 272 | |
olivier14750 | 0:2173fcfdaac6 | 273 | } else { |
olivier14750 | 0:2173fcfdaac6 | 274 | cara[index_cara]= morse[i]; |
olivier14750 | 0:2173fcfdaac6 | 275 | index_cara++; |
olivier14750 | 0:2173fcfdaac6 | 276 | cara[index_cara]='\0'; // c'est pour decoder la chaine de caractère |
olivier14750 | 0:2173fcfdaac6 | 277 | |
olivier14750 | 0:2173fcfdaac6 | 278 | } |
olivier14750 | 0:2173fcfdaac6 | 279 | |
olivier14750 | 0:2173fcfdaac6 | 280 | } |
olivier14750 | 0:2173fcfdaac6 | 281 | |
olivier14750 | 0:2173fcfdaac6 | 282 | //On affiche le code decodé sur l'écran LCD |
olivier14750 | 0:2173fcfdaac6 | 283 | lcd.DisplayStringAt(0,LINE(1),(uint8_t *)morse_decode,CENTER_MODE); |
olivier14750 | 0:2173fcfdaac6 | 284 | flagBPReco =1; |
olivier14750 | 0:2173fcfdaac6 | 285 | pc.printf("code converti : %s\n\r",morse_decode); |
olivier14750 | 0:2173fcfdaac6 | 286 | |
olivier14750 | 0:2173fcfdaac6 | 287 | |
olivier14750 | 0:2173fcfdaac6 | 288 | |
olivier14750 | 0:2173fcfdaac6 | 289 | } |
olivier14750 | 0:2173fcfdaac6 | 290 | //On attend que la touche "recommencer" soit appuyer pour tout réinitialiser |
olivier14750 | 0:2173fcfdaac6 | 291 | if(flagBPReco==1){ |
olivier14750 | 0:2173fcfdaac6 | 292 | while(Recommencer.Touched()!=true); |
olivier14750 | 0:2173fcfdaac6 | 293 | //morse_decode = ""; |
olivier14750 | 0:2173fcfdaac6 | 294 | flagBPReco=0; |
olivier14750 | 0:2173fcfdaac6 | 295 | index_TabCara=0; |
olivier14750 | 0:2173fcfdaac6 | 296 | index_Temps=0; |
olivier14750 | 0:2173fcfdaac6 | 297 | index_TabTemps=0; |
olivier14750 | 0:2173fcfdaac6 | 298 | |
olivier14750 | 0:2173fcfdaac6 | 299 | lcd.ClearStringLine(1); |
olivier14750 | 0:2173fcfdaac6 | 300 | lcd.DisplayStringAt(0,LINE(1),(uint8_t *)"En cours...",CENTER_MODE); |
olivier14750 | 0:2173fcfdaac6 | 301 | for(i = 0;i<index_morse_decode;i++){ |
olivier14750 | 0:2173fcfdaac6 | 302 | morse_decode[index_morse_decode]=0; |
olivier14750 | 0:2173fcfdaac6 | 303 | } |
olivier14750 | 0:2173fcfdaac6 | 304 | index_morse_decode=0; |
olivier14750 | 0:2173fcfdaac6 | 305 | |
olivier14750 | 0:2173fcfdaac6 | 306 | |
olivier14750 | 0:2173fcfdaac6 | 307 | Recommencer.Activate(); |
olivier14750 | 0:2173fcfdaac6 | 308 | Arrete.Activate(); |
olivier14750 | 0:2173fcfdaac6 | 309 | |
olivier14750 | 0:2173fcfdaac6 | 310 | |
olivier14750 | 0:2173fcfdaac6 | 311 | } |
olivier14750 | 0:2173fcfdaac6 | 312 | |
olivier14750 | 0:2173fcfdaac6 | 313 | |
olivier14750 | 0:2173fcfdaac6 | 314 | |
olivier14750 | 0:2173fcfdaac6 | 315 | } |
olivier14750 | 0:2173fcfdaac6 | 316 | } |