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

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?

UserRevisionLine numberNew 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 }