Test Comm
Dependencies: mbed
Diff: SITAEL-Comm.cpp
- Revision:
- 8:7a81e89f60df
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SITAEL-Comm.cpp Wed May 18 14:29:48 2022 +0000
@@ -0,0 +1,132 @@
+#include "mbed.h"
+#include<stdlib.h>
+
+// dimensione massima del pacchetto ricevuto su seriale
+#define PACKETDIM 512
+
+
+// Definizione periferica USB seriale del PC
+Serial pc(USBTX, USBRX, 921600); // seriale di comunicazione con il PC. Associati a PA_11 e PA_12
+
+// Definizione periferica seriale del Modulo Seriale HC05
+Serial mySerial(PA_9, PA_10, 115200); //Tx, Rx, bps
+
+
+// User Button, LED
+DigitalIn myButton(USER_BUTTON); // pulsante Blu sulla scheda. Associato a PC_13
+DigitalOut myLed(LED2); // LED verde sulla scheda. Associato a PA_5
+
+
+
+// array per la ricezione dei messaggi da Seriale
+volatile char caRxPacket[PACKETDIM];
+
+// contatore e indice di caratteri ricevuti da Seriale
+volatile char nRxCharCount; // Contatore dei caratteri ricevuti; Si aggiornerà modulo 256 a buffer circolare
+volatile char nRxCharIndex; // Indice dell'array dei caratteri ricevuti e già visualizzati sui LED; Si aggiornerà modulo 256 a buffer circolare
+
+/**********************************************/
+// 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
+ mySerial.putc(cReadChar); // Diagnostica: write char to Seriale
+ pc.putc(cReadChar); // Diagnostica: write char to PC
+
+ //pc.printf("W>: 0x%02x\n\r",cReadChar); // diagnostica
+ }
+}
+
+//**********************************************/
+// IRQ associata a Rx da Seriale
+//**********************************************/
+void SerialeRxInterrupt(void)
+{
+
+ // carattere ricevuto da Seriale
+ char cReadChar;
+
+ while((mySerial.readable()))
+ {
+ // acquisice stringa in input e memorizza in array
+ cReadChar = mySerial.getc(); // Read character
+ nRxCharCount++; // incrementa il contatore dei caratteri ricevuti
+ caRxPacket[nRxCharCount]=cReadChar;
+
+ // visualizza l'ultimo carattere ricevuto
+ pc.printf("> Rx: %c \r\n",cReadChar); // diagnostica
+ }
+ }
+
+/**********/
+/* MAIN */
+/**********/
+int main()
+{
+ // indice per i cicli
+ int nIndex;
+
+ // LED su scheda inizialmente spento
+ myLed = 0;
+
+
+ // messaggio di benvenuto
+ pc.printf("\r\n***** Hallo ***** \r\n");
+
+
+ // inizializza contatore e indice di caratteri ricevuti
+ nRxCharCount = 0;
+ nRxCharIndex =0;
+
+ // inizializza array di caratteri ricevuti
+ for(nIndex=0; nIndex<PACKETDIM; nIndex++)
+ {
+ caRxPacket[nIndex]=0;
+ }
+
+ // Attiva la IRQ per la RX su seriale
+ mySerial.attach(&SerialeRxInterrupt,Serial::RxIrq); // // entra in questa routine quando riceve un carattere dalla seriale del Seriale
+ pc.attach(&pcRxInterrupt,Serial::RxIrq); // entra in questa routine quando riceve un carattere dalla USB del PC
+
+ //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ //++++++++++++++ INIZIO Test +++++++++++++++++++++++++++++++
+ //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+
+ //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ //++++++++++++++ FINE Test +++++++++++++++++++++++++++++++++
+ //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+
+
+ //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ //++++++++++++++ INIZIO Ciclo Principale +++++++++++++++++++
+ //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ while(true)
+ {
+ //++++++++++++++++++++++++++ INIZIO Se premuto il myButton effettua un test +++++++++++++++++++++++++++++
+ if(myButton == 0)
+ {
+ myLed =1;
+ }
+ else
+ {
+ myLed =0;
+ }
+ //++++++++++++++++++++++++++ FINE Se premuto il myButton effettua test +++++++++++++++++++++++++++++
+
+ } //while(true) Ciclo principale
+
+ //++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ //++++++++++++++ FINE Ciclo Principale +++++++++++++++++++
+ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+} // main()