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:45:16 2014 +0000
Revision:
2:bc413454a83e
Parent:
1:cecf9bdf045b
Child:
3:002503ab7199
C027_Support??????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ntaka206 0:1ababa0d0c42 1 #include "mbed.h"
ntaka206 0:1ababa0d0c42 2 #include "GPS.h"
ntaka206 0:1ababa0d0c42 3
ntaka206 1:cecf9bdf045b 4 #define C027_USEONBOARD
ntaka206 1:cecf9bdf045b 5 #include "C027.h"
ntaka206 1:cecf9bdf045b 6 C027 c027;
ntaka206 0:1ababa0d0c42 7
ntaka206 2:bc413454a83e 8 #define TRACE printf
ntaka206 0:1ababa0d0c42 9
ntaka206 0:1ababa0d0c42 10 int main(void)
ntaka206 0:1ababa0d0c42 11 {
ntaka206 0:1ababa0d0c42 12 int ret;
ntaka206 0:1ababa0d0c42 13 char buf[2048] = "";
ntaka206 0:1ababa0d0c42 14
ntaka206 2:bc413454a83e 15 // USB debug output
ntaka206 2:bc413454a83e 16 Serial pc(USBTX,USBRX);
ntaka206 2:bc413454a83e 17 pc.baud(115200);
ntaka206 0:1ababa0d0c42 18
ntaka206 0:1ababa0d0c42 19 wait_ms(1000);
ntaka206 2:bc413454a83e 20 // 3G modem power off
ntaka206 0:1ababa0d0c42 21 c027.mdmPower(false);
ntaka206 2:bc413454a83e 22 // GPS power on
ntaka206 0:1ababa0d0c42 23 c027.gpsPower(true);
ntaka206 0:1ababa0d0c42 24 wait(2);
ntaka206 2:bc413454a83e 25 // Create gps object
ntaka206 0:1ababa0d0c42 26 GPSI2C gps(GPSSDA,GPSSCL,GPSADR);
ntaka206 2:bc413454a83e 27
ntaka206 2:bc413454a83e 28 // Serial out for Logomatic
ntaka206 0:1ababa0d0c42 29 Serial pc2(P4_28, P4_29);
ntaka206 0:1ababa0d0c42 30 pc2.baud(9600);
ntaka206 0:1ababa0d0c42 31
ntaka206 0:1ababa0d0c42 32 const int wait = 100;
ntaka206 0:1ababa0d0c42 33 bool abort = false;
ntaka206 0:1ababa0d0c42 34 while (!abort) {
ntaka206 0:1ababa0d0c42 35 while ((ret = gps.getMessage(buf, sizeof(buf))) > 0)
ntaka206 0:1ababa0d0c42 36 {
ntaka206 0:1ababa0d0c42 37 int len = LENGTH(ret);
ntaka206 0:1ababa0d0c42 38 // TRACE("NMEA: %.*s\r\n", len-2, buf);
ntaka206 0:1ababa0d0c42 39 // pc2.printf("NMEA: %.*s\r\n", len-2, buf);
ntaka206 0:1ababa0d0c42 40 if ((PROTOCOL(ret) == GPSParser::NMEA) && (len > 6))
ntaka206 0:1ababa0d0c42 41 {
ntaka206 2:bc413454a83e 42 if (!strncmp("$GPGGA", buf, 6))
ntaka206 0:1ababa0d0c42 43 {
ntaka206 2:bc413454a83e 44 double lat = 0, lon = 0;
ntaka206 0:1ababa0d0c42 45 double utc;
ntaka206 2:bc413454a83e 46 char qual;
ntaka206 2:bc413454a83e 47 double hdop = 99.99;
ntaka206 2:bc413454a83e 48 double hsea = 99.99;
ntaka206 1:cecf9bdf045b 49 char outbuf[256];
ntaka206 2:bc413454a83e 50 if (gps.getNmeaItem(1,buf,len,utc) &&
ntaka206 2:bc413454a83e 51 gps.getNmeaAngle(2,buf,len,lat) &&
ntaka206 2:bc413454a83e 52 gps.getNmeaAngle(4,buf,len,lon) &&
ntaka206 2:bc413454a83e 53 gps.getNmeaItem(8,buf,len,hdop) &&
ntaka206 2:bc413454a83e 54 gps.getNmeaItem(9,buf,len,hsea) &&
ntaka206 2:bc413454a83e 55 gps.getNmeaItem(6,buf,len,qual) && qual != 0)
ntaka206 0:1ababa0d0c42 56 {
ntaka206 2:bc413454a83e 57 sprintf(outbuf, "%06d,%.6f,%.6f,%.2f,%.1f\r\n", (long)utc, lat, lon, hdop, hsea);
ntaka206 1:cecf9bdf045b 58 TRACE(outbuf);
ntaka206 1:cecf9bdf045b 59 pc2.printf(outbuf);
ntaka206 0:1ababa0d0c42 60 }
ntaka206 0:1ababa0d0c42 61 }
ntaka206 0:1ababa0d0c42 62 }
ntaka206 0:1ababa0d0c42 63 }
ntaka206 0:1ababa0d0c42 64 wait_ms(wait);
ntaka206 0:1ababa0d0c42 65 }
ntaka206 0:1ababa0d0c42 66 gps.powerOff();
ntaka206 0:1ababa0d0c42 67 TRACE("Shutdown\r\n");
ntaka206 0:1ababa0d0c42 68 c027.gpsPower(false);
ntaka206 0:1ababa0d0c42 69 return 0;
ntaka206 0:1ababa0d0c42 70 }