PC - NUCLEO USB Polling Communication

Dependencies:   mbed

Fork of Nucleo-COMM-Protocol by Giuseppe Falagario

Files at this revision

API Documentation at this revision

Comitter:
pinofal
Date:
Mon May 07 07:08:30 2018 +0000
Parent:
2:eeab69a684ad
Commit message:
Amaldi 1 Exercise

Changed in this revision

PC-Comm-Polling.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp Show diff for this revision Revisions of this file
diff -r eeab69a684ad -r 788597ccf179 PC-Comm-Polling.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PC-Comm-Polling.cpp	Mon May 07 07:08:30 2018 +0000
@@ -0,0 +1,74 @@
+// Tested: NUCLEO-L476RG
+// Tested: NUCLEO-F207ZG
+#include "mbed.h"
+
+// genera un oggetto serial collegato al PC
+Serial pc(USBTX, USBRX);
+
+// genera un oggetto DigitalOut collegato al Led
+DigitalOut MyLed1(LED1); // verde
+DigitalOut MyLed2(LED2); // blu
+DigitalOut MyLed3(LED3); // rosso
+
+
+// indice per i cicli
+int nIndex;
+
+// carattere ricevuto dal PC
+char cReadChar;
+// carattere inviato al PC
+char cWriteChar;
+
+
+/********/
+/* MAIN */
+/********/
+int main() 
+{
+    // configura velocità della comunicazione seriale su USB-VirtualCom e invia messaggio di benvenuto
+    pc.baud(921600); //921600 bps
+    
+    // inizializza variabili
+    cReadChar = '\0';
+    MyLed1=0; // spegni il Led1
+    MyLed2=0; // spegni il Led2
+    MyLed3=0; // spegni il Led3
+  
+    
+    pc.printf("\r\n> Hallo Amaldi Students - Start Exercise 1 \r\n");
+ 
+/******* INIZIO ESEMPIO CON POLLING  ***/    
+    // ciclo infinito
+    while(true)
+    {
+        // spegne il Led per 0.5 sec
+        MyLed1 = 0;
+        MyLed2 = 0;
+        MyLed3 = 0;
+        wait_ms(500);
+                
+        // verifica se è arrivato un carattere dal PC
+        if(pc.readable())
+        {
+            // cattura il carattere ricevuto 
+            cReadChar = pc.getc();
+            
+            //accendi il Led per 500ms
+            // Accende il Led solo se invio carattere corretto 
+            if(cReadChar == 'p')
+            {
+                MyLed1 = 1;
+                MyLed2 = 1;
+                MyLed3 = 1;
+                wait_ms(500);
+            }
+            
+            // restituisci messaggio al PC su carattere ricevuto
+            cWriteChar = cReadChar+1; 
+            pc.printf("Rx Char= %c; Tx Char = %c\n\r", cReadChar, cWriteChar);
+         }
+    }
+
+/******* FINE ESEMPIO CON POLLING ***** */
+
+}
\ No newline at end of file
diff -r eeab69a684ad -r 788597ccf179 main.cpp
--- a/main.cpp	Tue Jan 23 10:14:58 2018 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-#include "mbed.h"
-
-// dimensione del pacchetto di comunicazione tra PC e uC
-#define PACKETDIM 33
-
-DigitalOut led(LED1);
-Serial pc(SERIAL_TX, SERIAL_RX);
-
-// indice per i cicli
-int nIndex;
-
-// indice dell'array caRxPacket[]
-volatile int  nRxIndex;
-// carattere in arrivo dal PC
-volatile char caReadChar;
-
-// paccchetto ricevuto dal PC
-char caRxPacket[PACKETDIM];
-int nRxPacketSize;
-
-void RxInterrupt(void)
-{
-    // reset pacchetto ricevuto
-    nIndex=0;
-    for(nIndex=0;nIndex<PACKETDIM;nIndex++)
-    {
-        caRxPacket[nIndex]='\0';
-    }
-    
-    // ricevi caratteri su seriale, se disponibili   
-    while((pc.readable()))
-    {
-        pc.gets(caRxPacket,sizeof(caRxPacket));
-        nRxPacketSize = strlen(caRxPacket);
-        //pc.printf("*** pc.readable = %2d \n\r",nRxPacketSize); 
-        //pc.scanf("%s", &caRxPacket);
-        //+++pc.putc(pc.getc());             // read data from UART
-        
-    }
-    //+++pc.printf("%s",caRxPacket); 
-    pc.printf("You also say goodbye to yours tk"); 
-}
-
-int main() 
-{
-    // configura velocità della comunicazione seriale su USB-VirtualCom e invia messaggio di benvenuto
-    //pc.baud(921600); //921600 bps
-    pc.baud(256000); //9600 bps
-    //pc.printf("*** SineWave Generation ***\n\r");
-       
-    pc.attach(&RxInterrupt,Serial::RxIrq);
-    
-    while(true)
-    {
-        led = !led; // Toggle LED
-    }   
-}
\ No newline at end of file