CQ出版 Interface 2014年10月号のC027(MAX7-Q)GPSテスト記事のプログラム。 CQ publishing Interface 2014.10 issue, C027 GPS(MAX-7Q) test program.
Dependencies: C027 C027_Support mbed
main.cpp@3:002503ab7199, 2014-07-28 (annotated)
- Committer:
- ntaka206
- Date:
- Mon Jul 28 15:51:53 2014 +0000
- Revision:
- 3:002503ab7199
- Parent:
- 2:bc413454a83e
C027_SupportTest_xively_location????????C027_Support?????????????; http://mbed.org/users/ntaka206/code/C027_Support/;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ntaka206 | 3:002503ab7199 | 1 | /* |
ntaka206 | 3:002503ab7199 | 2 | * CQ出版 Interface 2014年10月号のC027(MAX-7Q)GPSテスト記事で使用したプログラム |
ntaka206 | 3:002503ab7199 | 3 | * Naoya Takamura |
ntaka206 | 3:002503ab7199 | 4 | */ |
ntaka206 | 0:1ababa0d0c42 | 5 | #include "mbed.h" |
ntaka206 | 0:1ababa0d0c42 | 6 | #include "GPS.h" |
ntaka206 | 0:1ababa0d0c42 | 7 | |
ntaka206 | 1:cecf9bdf045b | 8 | #define C027_USEONBOARD |
ntaka206 | 1:cecf9bdf045b | 9 | #include "C027.h" |
ntaka206 | 1:cecf9bdf045b | 10 | C027 c027; |
ntaka206 | 0:1ababa0d0c42 | 11 | |
ntaka206 | 2:bc413454a83e | 12 | #define TRACE printf |
ntaka206 | 0:1ababa0d0c42 | 13 | |
ntaka206 | 0:1ababa0d0c42 | 14 | int main(void) |
ntaka206 | 0:1ababa0d0c42 | 15 | { |
ntaka206 | 0:1ababa0d0c42 | 16 | int ret; |
ntaka206 | 0:1ababa0d0c42 | 17 | char buf[2048] = ""; |
ntaka206 | 0:1ababa0d0c42 | 18 | |
ntaka206 | 2:bc413454a83e | 19 | // USB debug output |
ntaka206 | 2:bc413454a83e | 20 | Serial pc(USBTX,USBRX); |
ntaka206 | 2:bc413454a83e | 21 | pc.baud(115200); |
ntaka206 | 0:1ababa0d0c42 | 22 | |
ntaka206 | 0:1ababa0d0c42 | 23 | wait_ms(1000); |
ntaka206 | 2:bc413454a83e | 24 | // 3G modem power off |
ntaka206 | 0:1ababa0d0c42 | 25 | c027.mdmPower(false); |
ntaka206 | 2:bc413454a83e | 26 | // GPS power on |
ntaka206 | 0:1ababa0d0c42 | 27 | c027.gpsPower(true); |
ntaka206 | 0:1ababa0d0c42 | 28 | wait(2); |
ntaka206 | 2:bc413454a83e | 29 | // Create gps object |
ntaka206 | 0:1ababa0d0c42 | 30 | GPSI2C gps(GPSSDA,GPSSCL,GPSADR); |
ntaka206 | 2:bc413454a83e | 31 | |
ntaka206 | 2:bc413454a83e | 32 | // Serial out for Logomatic |
ntaka206 | 0:1ababa0d0c42 | 33 | Serial pc2(P4_28, P4_29); |
ntaka206 | 0:1ababa0d0c42 | 34 | pc2.baud(9600); |
ntaka206 | 0:1ababa0d0c42 | 35 | |
ntaka206 | 0:1ababa0d0c42 | 36 | const int wait = 100; |
ntaka206 | 0:1ababa0d0c42 | 37 | bool abort = false; |
ntaka206 | 0:1ababa0d0c42 | 38 | while (!abort) { |
ntaka206 | 0:1ababa0d0c42 | 39 | while ((ret = gps.getMessage(buf, sizeof(buf))) > 0) |
ntaka206 | 0:1ababa0d0c42 | 40 | { |
ntaka206 | 0:1ababa0d0c42 | 41 | int len = LENGTH(ret); |
ntaka206 | 0:1ababa0d0c42 | 42 | // TRACE("NMEA: %.*s\r\n", len-2, buf); |
ntaka206 | 0:1ababa0d0c42 | 43 | // pc2.printf("NMEA: %.*s\r\n", len-2, buf); |
ntaka206 | 0:1ababa0d0c42 | 44 | if ((PROTOCOL(ret) == GPSParser::NMEA) && (len > 6)) |
ntaka206 | 0:1ababa0d0c42 | 45 | { |
ntaka206 | 2:bc413454a83e | 46 | if (!strncmp("$GPGGA", buf, 6)) |
ntaka206 | 0:1ababa0d0c42 | 47 | { |
ntaka206 | 2:bc413454a83e | 48 | double lat = 0, lon = 0; |
ntaka206 | 0:1ababa0d0c42 | 49 | double utc; |
ntaka206 | 2:bc413454a83e | 50 | char qual; |
ntaka206 | 2:bc413454a83e | 51 | double hdop = 99.99; |
ntaka206 | 2:bc413454a83e | 52 | double hsea = 99.99; |
ntaka206 | 1:cecf9bdf045b | 53 | char outbuf[256]; |
ntaka206 | 2:bc413454a83e | 54 | if (gps.getNmeaItem(1,buf,len,utc) && |
ntaka206 | 2:bc413454a83e | 55 | gps.getNmeaAngle(2,buf,len,lat) && |
ntaka206 | 2:bc413454a83e | 56 | gps.getNmeaAngle(4,buf,len,lon) && |
ntaka206 | 2:bc413454a83e | 57 | gps.getNmeaItem(8,buf,len,hdop) && |
ntaka206 | 2:bc413454a83e | 58 | gps.getNmeaItem(9,buf,len,hsea) && |
ntaka206 | 2:bc413454a83e | 59 | gps.getNmeaItem(6,buf,len,qual) && qual != 0) |
ntaka206 | 0:1ababa0d0c42 | 60 | { |
ntaka206 | 2:bc413454a83e | 61 | sprintf(outbuf, "%06d,%.6f,%.6f,%.2f,%.1f\r\n", (long)utc, lat, lon, hdop, hsea); |
ntaka206 | 1:cecf9bdf045b | 62 | TRACE(outbuf); |
ntaka206 | 1:cecf9bdf045b | 63 | pc2.printf(outbuf); |
ntaka206 | 0:1ababa0d0c42 | 64 | } |
ntaka206 | 0:1ababa0d0c42 | 65 | } |
ntaka206 | 0:1ababa0d0c42 | 66 | } |
ntaka206 | 0:1ababa0d0c42 | 67 | } |
ntaka206 | 0:1ababa0d0c42 | 68 | wait_ms(wait); |
ntaka206 | 0:1ababa0d0c42 | 69 | } |
ntaka206 | 0:1ababa0d0c42 | 70 | gps.powerOff(); |
ntaka206 | 0:1ababa0d0c42 | 71 | TRACE("Shutdown\r\n"); |
ntaka206 | 0:1ababa0d0c42 | 72 | c027.gpsPower(false); |
ntaka206 | 0:1ababa0d0c42 | 73 | return 0; |
ntaka206 | 0:1ababa0d0c42 | 74 | } |