GPS test

Dependencies:   mbed GYSFDMAXB

Revision:
0:f7f81e36e9d7
Child:
1:020b393621e5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Apr 05 09:18:42 2021 +0000
@@ -0,0 +1,73 @@
+#include "mbed.h"
+#include "AsyncSerial.hpp"
+#include <string.h>
+//"include <strlib.h>
+
+Serial pc(USBTX, USBRX);
+Serial gps(PC_12, PD_2);
+
+void GPS_Read();
+
+const int uart_max = 1000;
+int uart_start = 0;
+int uart_index = 0;
+char uart_buffer[uart_max];
+
+void gps_receive()
+{
+    while (gps.readable())
+    {
+        char c;
+        c = gps.getc();
+        uart_buffer[uart_index] = c;
+        if (c == '$')
+        {
+            uart_start = uart_index;
+        }
+        if (c == '\n')
+        {
+            GPS_Read();
+        }
+        uart_index = (uart_index + 1) % uart_max;
+    }
+}
+
+
+void GPS_Read()
+{
+    char line[256];
+    for (int i = 0 ;i < 256; i++)
+    {
+        line[i] = 0;
+    }
+    bool flag = false;
+    int counts = 0;
+    for (int i = 0; i < 256; i++)
+    {
+        line[i] = uart_buffer[(uart_start + i) % uart_max];
+        counts++;
+        if (line[i] == '\n')
+        {
+            flag = true;
+            break;
+        }
+    }
+    if (flag)
+    {
+        pc.printf("Counts:%d\r\n", counts);
+        pc.printf("%s\r\n", line);
+    }
+}
+
+int main()
+{
+    pc.baud(115200);
+    gps.baud(57600);
+    gps.attach(gps_receive, Serial::RxIrq);
+    while (1)
+    {
+//        GPS_Read();
+//        pc.printf("A\n");
+        
+    }
+}
\ No newline at end of file