Uebung Serielle Schnittstelle - Interrupt

Dependencies:   mbed

Revision:
0:82fe2f4476f9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Jan 31 22:07:53 2019 +0000
@@ -0,0 +1,72 @@
+#include "mbed.h"
+
+// Uebung mit serieller Schnittstelle und Interrupts
+// Ausgabe - SERIAL
+// Programm wartet auf eine Eingabe, der String wird dann jeweils um
+// die Eingabe erweitert
+// RESET durch Eingabe von '.' [PUNKT]
+
+
+class SerialEvent
+{
+private:
+    Serial _connection;  
+    bool _flag;
+    int _x; 
+
+public:
+    SerialEvent(PinName tx, PinName rx): _connection(tx, rx)        // Construktor 
+    {
+        _connection.attach(callback(this, &SerialEvent::readSerial));
+    }
+    
+    char content[200]; 
+    
+    void readSerial(void);
+    bool checkFlag(void);
+};
+
+
+void SerialEvent::readSerial(void)
+{
+        if (_connection.readable()) content[_x] = _connection.getc();
+
+        if (content[_x] == '.')
+        {
+            content[_x] = '\0';
+            _x = 0;
+            _flag = 0;
+            
+
+            int y = 0;
+            while(content[y] != '\0')   
+            {
+                content[y] = '\0';
+                y++;
+            }
+            y = 0;
+        }
+        else
+        {
+            _x++;
+            _flag = 1;
+        }   
+
+}
+
+bool SerialEvent::checkFlag(void)
+{
+    return _flag;
+}
+
+SerialEvent connectme(USBTX, USBRX);        // Neues Objekt erstellen und übergabe von TX und RX
+
+int main() 
+{
+    // Ausgabe des momentanen Status sowie dem attachten String
+    while(1)
+    {
+        printf("Flag Status: %i    String: %s \n", connectme.checkFlag(), connectme.content);
+        wait_ms(200);
+    }
+}