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 |
--- 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