GPS受信機からの受信データを処理するサンプルコード。GPS受信機が即位できる屋外でテストして下さい。

Dependencies:   TimerExtended TinyGPS mbed

main.cpp

Committer:
morimoriYNCT
Date:
2014-12-08
Revision:
0:cfd5cc72b38c

File content as of revision 0:cfd5cc72b38c:

/**********************************
check: OK, ublox 5T
**********************************/
#include "mbed.h"
#include "TinyGPS.h"
#include "TimerExtended.h"

TinyGPS gpsr;

// serial
Serial serial_gps(p9, p10);        // tx, rx
Serial serial_pc(USBTX, USBRX);    // tx, rx

Timer timer;
TimerExtended timer2;
TimerExtended timer3;

void setup()
{
    timer.start();
    timer2.start();
    
    serial_gps.baud(9600);
    serial_pc.baud(115200);  
    
    serial_pc.printf("hello\n");
    wait(3.0);  
    
    timer3.start();
}

void loop()
{
    if(serial_gps.readable())
    {
        //serial_pc.printf("hoge\n");
        char c = serial_gps.getc();
        //serial_pc.putc(c);
        bool gps_avairable = gpsr.encode(c);
        if(gps_avairable)
        {
            //serial_pc.printf("fuga\n");
            double lat, lon;
            unsigned long age;
            (void)gpsr.f_get_position(&lat, &lon, &age);
            
            int year;
            byte month, day, hour, minute, second;
            (void)gpsr.crack_datetime(&year, &month, &day, &hour, &minute, &second);
            
            double t = (double)timer.read_ms() / 1000.0;
            serial_pc.printf("%f, ", t);
            double t2 = (double)timer2.read_ms() / 1000.0;
            serial_pc.printf("%f, ", t2);
            double t3 = (double)timer3.read_ms() / 1000.0;
            serial_pc.printf("%f, ", t3);
            serial_pc.printf("%d-%02d-%02d %02d:%02d:%02d, ", year, month, day, hour, minute, second);
            serial_pc.printf("%f, %f\n", lat, lon);
        }
    }
}

int main() {
    setup();
    
    while(1) 
    {   
        loop();
    }
}