Campanella Problemi Risolti
Dependencies: mbed
Revision 20:04c0e20e1399, committed 2020-07-24
- Comitter:
- pinofal
- Date:
- Fri Jul 24 19:30:32 2020 +0000
- Parent:
- 19:733cea5788a4
- Commit message:
- Campanella Problemi Risolti
Changed in this revision
MicRobot-Rev085.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 733cea5788a4 -r 04c0e20e1399 MicRobot-Rev085.cpp --- a/MicRobot-Rev085.cpp Thu Jul 23 10:19:54 2020 +0000 +++ b/MicRobot-Rev085.cpp Fri Jul 24 19:30:32 2020 +0000 @@ -50,31 +50,7 @@ /* Routine di gestione Interrupt associata al fronte di salita del segnale di encoder */ /**************************************************************************************/ -/**********************************************/ -// IRQ associata a Rx da PC -//**********************************************/ -void pcRxInterrupt(void) -{ - // array per la ricezione dei messaggi da seriale - char cReadChar; - - // ricevi caratteri su seriale, se disponibili - while((pc.readable())) - { - // acquisice stringa in input e relativa dimensione - cReadChar = pc.getc(); // read character from PC - //myBLE.putc(cReadChar); // Diagnostica: write char to BLE - //pc.putc(cReadChar); // Diagnostica: write char to PC - - //pc.printf("W>: 0x%02x\n\r",cReadChar); // diagnostica - /* if(cReadChar == '0') // se scrivo '0', invia questa stringa - { - // DIAGNOSTICA: - // Invia Stringa di comando al Robot - myBLE.printf("\r\n> Prova di Trasmissione \r\n"); - }*/ - } -} + //**********************************************/ // IRQ associata a Rx da BLE @@ -85,48 +61,23 @@ // carattere ricevuto da BLE char cReadChar; - while((myBLE.readable())) + while(myBLE.readable()) { // acquisice stringa in input e memorizza in array cReadChar = myBLE.getc(); // Read character //caRxPacket[nCharCount]=cReadChar; //nCharCount++; - // pc.printf("%c", cReadChar); // diagnostica + //pc.printf("%c", cReadChar); // diagnostica - // acquisisce il carattere di start comando o coordinate da APP - if(cReadChar=='(') + // +++++++++++++++++ INIZIO gestione Comando da Button +++++++++++++++++ + // Ho ricevuto il comando da un Button se il primo carattere è una lettera maiuscola tra 'A' e 'Z' oppure tra 'a' e 'z' + if(((cReadChar > 0x40) && (cReadChar < 0x5A)) || ((cReadChar > 0x61) && (cReadChar < 0x7A))) // caratteri alfabetici da 'A' a 'T' { - // acquisisce il primo carattere di comando o di coordinate - cReadChar = myBLE.getc(); // Read character - // pc.printf("%c", cReadChar); // diagnostica - - // +++++++++++++++++ INIZIO gestione Comando da Button +++++++++++++++++ - // Ho ricevuto il comando da un Button se il primo carattere è una lettera maiuscola tra A e T - if((cReadChar > 0x40) && (cReadChar < 0x55)) // caratteri alfabetici da 'A' a 'T' - { - // memorizza come comando il carattere appena letto - cCommandBLE = cReadChar; - // legge e memorizza come paramentro il successivo carattere - cReadChar = myBLE.getc(); // legge parametro - // pc.printf("%c", cReadChar); // diagnostica - nParamBLE = cReadChar-0x30; - cReadChar = myBLE.getc(); // legge la ')' di chiusura comando - //pc.printf("%c", cReadChar); // diagnostica - - // visualizza comando e parametro inviato da BLE - // pc.printf("> %c%d \r\n\r",cCommandBLE, nParamBLE); // diagnostica - if(cReadChar==')') - { - //pc.printf("(fX , fY) = (%.1f , %.1f) \r\n", fX, fY); // diagnostica - } - else // dopo la Y e i numeri, mi attendo parentesi chiusa ) - { - pc.printf("> Errore = %c invece di ) \r\n\n", cReadChar); // diagnostica - } - } - // +++++++++++++++++ FINE gestione Comando da Button +++++++++++++++++ - } // if(cReadChar == '(') - }// chiude il while + // memorizza come comando il carattere appena letto + cCommandBLE = cReadChar; + } + // +++++++++++++++++ FINE gestione Comando da Button +++++++++++++++++ + } } @@ -149,16 +100,11 @@ // inizializza variabili da BLE cCommandBLE = 0; // inizialmente nessun comando da BLE - cOldCommandBLE = 0; // inizialmente nessun comando da BLE - cParamBLE = 0; // inizialmente nessun parametro da BLE - nParamBLE=0; // inizialmente nessun parametro da BLE - nOldParamBLE=0; // inizialmente nessun parametro da BLE - bReset = false; //bReset = true/false quando riceve un comando (R1)/(R0) dalla APP - - // inizializza array di caratteri ricevuti - for(nIndex=0; nIndex < PACKETDIM; nIndex++) - {caRxPacket[nIndex]=0;} - nCharCount=0; + cOldCommandBLE = 0; // inizialmente nessun comando da BLE + + // Attiva la IRQ per la RX su seriale + myBLE.attach(&BLERxInterrupt,Serial::RxIrq); // // entra in questa routine quando riceve un carattere dalla seriale del BLE + //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //++++++++++++++ INIZIO Ciclo Principale +++++++++++++++++++ @@ -168,49 +114,43 @@ { //++++++++++++++++++++++++++ INIZIO Interpreta Comandi da Pulsanti della APP ++++++++++++++++++++++++++++++++++++++++++++ - - if((cCommandBLE != cOldCommandBLE) || (nParamBLE != nOldParamBLE)) - { + if(cCommandBLE != cOldCommandBLE) + { switch (cCommandBLE) { - case 'A': // entrata + case 'I': // entrata { - if(nParamBLE==1) - { - myBLE.printf("Entrate\n\r"); - } - else - { - } + pc.printf("Acceso Messaggio Entrata\n\r"); } break; - case 'B': // Cambio + case 'i': // entrata + { + pc.printf("Spento Messaggio Entrata\n\r"); + } break; + case 'R': // Cambio { - if(nParamBLE==1) - { - pc.printf("Cambio\n\r"); - } - else - { - } + pc.printf("Acceso Messaggio Cambio\n\r"); + } break; + case 'r': // Cambio + { + pc.printf("Spento Messaggio Cambio\n\r"); } break; - case 'C': // Uscita + + case 'U': // Uscita { - if(nParamBLE==1) - { - pc.printf("Uscite\n\r"); - } - else - { - } + pc.printf("Acceso Messaggio Uscite\n\r"); + } break; + case 'u': // Uscita + { + pc.printf("Spento Messaggio Uscite\n\r"); } break; default: break; } - //pc.printf("Comando = %c, Parametro = %d \r\n", cCommandBLE, nParamBLE); // diagnostica + // ricorda di aver già compiuto l'operazione e non la ripetere fino a ricezione nuovo comando cOldCommandBLE = cCommandBLE; - nOldParamBLE = nParamBLE; } + //++++++++++++++++++++++++++++++++++++++++++++ FINE Interpreta Comandi da Pulsanti della APP ++++++++++++++++++++++++++++++++++++++++++++++++++++++ } //while (true) Ciclo principale