AresENSEA-CDF2020
/
AresCDFMainCode_us2
Test
Diff: debugPC.cpp
- Revision:
- 4:ad9b7355332e
- Parent:
- 3:3ba377aafdfd
- Child:
- 5:34ed652f8c31
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debugPC.cpp Sat Jul 18 17:09:08 2020 +0000 @@ -0,0 +1,222 @@ +// Nom du fichier : debugPC.cpp +#include "pins.h" + +// Variables globales & timers +Serial pc(USBTX, USBRX); +Ticker ticker_affUS; +Ticker ticker_affcd; +bool aff_US[6]; +bool aff_cd[4]; +int cmdType=0; + +void serialIT() // avec Tera Term +{ + //pc.printf("\n\rserialIT on\n\r"); + static int i=0; + static char buffer[10]=""; // Tableau qui contient la chaine de caractère rentrée dans le terminal. + static char cmd[Lcmd]=""; // Variable qui retient que les premiers caractères qui représentent la commande. + + char tampon = pc.getc(); + + if((tampon >= 48 && tampon <=57) || (tampon>=97 && tampon<=122) || tampon==13) { + buffer[i]=tampon; // Ajout du caractère dans le tableau buffer + pc.putc(buffer[i]); // Réécriture sur le terminal du caractère envoyé + i++; + } + + if(buffer[i-1]=='\r') { // Attente un appui sur la touche entrée + i=0; + copieTab(buffer,cmd); // Sauvegarde la commande dans le tableau cmd + + switch(cmdType) { + case 1 : // Commande test angle + StringToAngle(cmd); + cmdType=0; + break; + default : // Commande par défaut + cmdChoice(cmd); + } + } +} + +void copieTab(char *tab1,char *tab2) // Fonction qui recopie un tableau dans un autre +{ + //pc.printf("\n\rcopieTab on\n\r"); + //pc.printf("\n\r"); + for(int j=0; j<Lcmd; j++) { + tab2[j]=tab1[j]; + //pc.printf("%c",tab2[j]); + } + //pc.printf("\n\r"); +} + +void cmdChoice(char *cmd) // Fonction qui permet de choisir de l'activation d'une commande +{ + const char *options[]= { + "help", //0 + "usao", //1 + "us1o", //2 + "us2o", //3 + "us3o", //4 + "us4o", //5 + "us5o", //6 + "us6o", //7 + "tdrv", //8 + "cdon", //9 + "cdga", //10 + "cdgb", //11 + "tagl", //12 + 0 + }; + + long option=-1; + + for (long a=0; options[a] && option<0; a++) { + if (!strcmp(cmd,options[a]) || strcmp(cmd,options[a])==1) { // strcmp(cmd,options[a])==1 permet de contourner le problème, à revoir !!! + option=a; + } + //pc.printf("res = %d\r\n",strcmp(cmd,options[a])); + } + + switch (option) { + case 0: //help + // pc + pc.printf("\n\n\r###HELP###\n\r"); + pc.printf("usao : Affichage resultats capteurs a ultrasons\n\r"); + pc.printf("usxo : Affichage resultat capteur ultrasons x\n\r"); + pc.printf("tdrv : Lance la fonction test_drv()\n\r"); + pc.printf("cdon : Affichage resultats codeurs\n\r"); + pc.printf("cdgx : Affichage resultats codeur gauche phase x (a ou b)\n\r"); + pc.printf("tagl : Tourne le robot sur lui-meme avec un angle a preciser\r\n"); + pc.printf("\n\r"); + // bt + bt.printf("\n\n\r###HELP###\n\r"); + bt.printf("usao : Affichage resultats capteurs a ultrasons\n\r"); + bt.printf("usxo : Affichage resultat capteur ultrasons x\n\r"); + bt.printf("tdrv : Lance la fonction test_drv()\n\r"); + bt.printf("cdon : Affichage resultats codeurs\n\r"); + bt.printf("cdgx : Affichage resultats codeur gauche phase x (a ou b)\n\r"); + bt.printf("tagl : Tourne le robot sur lui-meme avec un angle a preciser\r\n"); + bt.printf("\n\r"); + break; + case 1: //usao + pc.printf("Capt US ALL ON/OFF\n\r"); + bt.printf("Capt US ALL ON/OFF\n\r"); + aff_US[0]=!aff_US[0]; + aff_US[1]=!aff_US[1]; + aff_US[2]=!aff_US[2]; + aff_US[3]=!aff_US[3]; + aff_US[4]=!aff_US[4]; + aff_US[5]=!aff_US[5]; + break; + case 2: //us1o + pc.printf("Capt US 1 ON/OFF\n\r"); + bt.printf("Capt US 1 ON/OFF\n\r"); + aff_US[0]=!aff_US[0]; + break; + case 3: //us2o + pc.printf("Capt US 2 ON/OFF\n\r"); + bt.printf("Capt US 2 ON/OFF\n\r"); + aff_US[1]=!aff_US[1]; + break; + case 4: //us3o + pc.printf("Capt US 3 ON/OFF\n\r"); + bt.printf("Capt US 3 ON/OFF\n\r"); + aff_US[2]=!aff_US[2]; + break; + case 5: //us4o + pc.printf("Capt US 4 ON/OFF\n\r"); + bt.printf("Capt US 4 ON/OFF\n\r"); + aff_US[3]=!aff_US[3]; + break; + case 6: //us5o + pc.printf("Capt US 5 ON/OFF\n\r"); + bt.printf("Capt US 5 ON/OFF\n\r"); + aff_US[4]=!aff_US[4]; + break; + case 7: //us6o + pc.printf("Capt US 6 ON/OFF\n\r"); + bt.printf("Capt US 6 ON/OFF\n\r"); + aff_US[5]=!aff_US[5]; + break; + case 8: //tdrv + pc.printf("Fonction test_drv()\n\r"); + bt.printf("Fonction test_drv()\n\r"); + test_drv(); + break; + case 9: //cdon + pc.printf("Results ALL Encoders ON/OFF\n\r"); + bt.printf("Results ALL Encoders ON/OFF\n\r"); + aff_cd[0]=!aff_cd[0]; + aff_cd[1]=!aff_cd[1]; + break; + case 10: //cdga + pc.printf("Results Encoder Left A ON/OFF\n\r"); + bt.printf("Results Encoder Left A ON/OFF\n\r"); + aff_cd[0]=!aff_cd[0]; + break; + case 11: //cdgb + pc.printf("Results Encoder Left B ON/OFF\n\r"); + bt.printf("Results Encoder Left B ON/OFF\n\r"); + aff_cd[1]=!aff_cd[1]; + break; + case 12: //tagl + pc.printf("Cmd Angle robot\r\n"); + pc.printf("Angle (entre 0 et 360 degres sous la forme xxx): "); + bt.printf("Cmd Angle robot\r\n"); + bt.printf("Angle (entre 0 et 360 degres sous la forme xxx): "); + cmdType=1; + break; + default: + pc.printf("Commande invalide\n\r"); + bt.printf("Commande invalide\n\r"); + } +} + +void StringToAngle(char *cmd) +{ + int cmd2 = 0; + cmd2 += (cmd[0]-48)*100; + cmd2 += (cmd[1]-48)*10; + cmd2 += (cmd[2]-48)*1; + + if (cmd2>=0 && cmd2<=360) { + pc.printf("\r\nCommande envoyee au robot : %d\r\n",cmd2); + bt.printf("\r\nCommande envoyee au robot : %d\r\n",cmd2); + testAngle(cmd2); + } else { + pc.printf("\r\nAngle incorrect\r\n\n"); + bt.printf("\r\nAngle incorrect\r\n\n"); + cmd2 = 0; + } +} + +void affUltrasons() +{ + // pc + if(aff_US[0]) pc.printf("Tps US1 = %5.0f uS\n\r", us_out[0]); + if(aff_US[1]) pc.printf("Tps US2 = %5.0f uS\n\r", us_out[1]); + if(aff_US[2]) pc.printf("Tps US3 = %5.0f uS\n\r", us_out[2]); + if(aff_US[3]) pc.printf("Tps US4 = %5.0f uS\n\r", us_out[3]); + if(aff_US[4]) pc.printf("Tps US5 = %5.0f uS\n\r", us_out[4]); + if(aff_US[5]) pc.printf("Tps US6 = %5.0f uS\n\r", us_out[5]); + if(aff_US[0]||aff_US[1]||aff_US[2]||aff_US[3]||aff_US[4]||aff_US[5]) pc.printf("\n\r"); + + // bt + if(aff_US[0]) bt.printf("Tps US1 = %5.0f uS\n\r", us_out[0]); + if(aff_US[1]) bt.printf("Tps US2 = %5.0f uS\n\r", us_out[1]); + if(aff_US[2]) bt.printf("Tps US3 = %5.0f uS\n\r", us_out[2]); + if(aff_US[3]) bt.printf("Tps US4 = %5.0f uS\n\r", us_out[3]); + if(aff_US[4]) bt.printf("Tps US5 = %5.0f uS\n\r", us_out[4]); + if(aff_US[5]) bt.printf("Tps US6 = %5.0f uS\n\r", us_out[5]); + if(aff_US[0]||aff_US[1]||aff_US[2]||aff_US[3]||aff_US[4]||aff_US[5]) bt.printf("\n\r"); +} + +void affCodeurs() +{ + if(aff_cd[0]) pc.printf("CdgA = %d\n\r", cpt_cdgA); + //if(aff_cd[1]) pc.printf("CdgB = %d\n\r", cpt_cdgB); + + if(aff_cd[0]) bt.printf("CdgA = %d\n\r", cpt_cdgA); + //if(aff_cd[1]) bt.printf("CdgB = %d\n\r", cpt_cdgB); +}