Simple USBHost GPS Dongle Receiver for FRDM-KL46Z test program
Dependencies: KL46Z-USBHost mbed SLCD
FRDM-KL46ZをUSBホストにしてUSBタイプのGPSレシーバを読み取るテストプログラムです。
Diff: main.cpp
- Revision:
- 1:2d8275968aaf
- Parent:
- 0:4231f156a567
--- a/main.cpp Sat Jan 18 13:43:06 2014 +0000 +++ b/main.cpp Wed Feb 05 13:40:35 2014 +0000 @@ -1,23 +1,40 @@ -// Simple USBHost GPS Dongle for FRDM-KL46Z test program #include "USBHostGPS.h" +#include "SLCD.h" -DigitalOut led1(PTD5); // green -DigitalOut led2(PTE29); // red +DigitalOut led1(LED_GREEN); +DigitalOut led2(LED_RED); #define LED_OFF 1 #define LED_ON 0 +SLCD slcd; + +void callback_gps(char* buf, int size) { + for(int i = 0; i < size; i++) { + char c = buf[i]; + printf("%c", c); + } + led2 = !led2; +} + int main() { // GT-730F/L 38400bps // Gosget SD-200 GPS DONGLE 4800bps - USBHostGPS gps(4800); - led2 = LED_OFF; + USBHostGPS gps(4800); + if (!gps.connect()) { + error("GPS not found.\n"); + } + gps.attachEventRaw(callback_gps); + + time_t prev = gps.nmea.update_t; while(1) { - char buf[64]; - int result = gps.readNMEA(buf, sizeof(buf)); - if (result > 0) { - for(int i = 0; i < result; i++) { - printf("%c", buf[i]); - } + USBHost::poll(); + if (prev != gps.nmea.update_t) { + struct tm * timeinfo; + timeinfo = localtime(&gps.nmea.update_t); + char buf[5]; + strftime(buf, sizeof(buf), "%M%S", timeinfo); + slcd.printf("%.4s", buf); + prev = gps.nmea.update_t; led1 = !led1; } }