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:
Tue Jun 10 00:25:59 2014 +0000
Revision:
1:cecf9bdf045b
Parent:
0:1ababa0d0c42
Child:
2:bc413454a83e
GGA?????????????commit

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 0:1ababa0d0c42 8 #define DOTRACE ((USBRX!=MDMRXD)&&(USBTX!=MDMTXD))
ntaka206 0:1ababa0d0c42 9 #define TRACE (!DOTRACE)?:printf
ntaka206 0:1ababa0d0c42 10
ntaka206 0:1ababa0d0c42 11 int main(void)
ntaka206 0:1ababa0d0c42 12 {
ntaka206 0:1ababa0d0c42 13 int ret;
ntaka206 0:1ababa0d0c42 14 char buf[2048] = "";
ntaka206 0:1ababa0d0c42 15
ntaka206 0:1ababa0d0c42 16 if (DOTRACE) {
ntaka206 0:1ababa0d0c42 17 Serial pc(USBTX,USBRX);
ntaka206 0:1ababa0d0c42 18 pc.baud(115200);
ntaka206 0:1ababa0d0c42 19 }
ntaka206 0:1ababa0d0c42 20
ntaka206 0:1ababa0d0c42 21 wait_ms(1000);
ntaka206 0:1ababa0d0c42 22
ntaka206 0:1ababa0d0c42 23 // turn on the supplies of the Modem and the GPS
ntaka206 0:1ababa0d0c42 24 c027.mdmPower(false);
ntaka206 0:1ababa0d0c42 25 c027.gpsPower(true);
ntaka206 0:1ababa0d0c42 26 wait(2);
ntaka206 0:1ababa0d0c42 27
ntaka206 0:1ababa0d0c42 28 // Create the GPS object
ntaka206 0:1ababa0d0c42 29 GPSI2C gps(GPSSDA,GPSSCL,GPSADR);
ntaka206 0:1ababa0d0c42 30
ntaka206 0:1ababa0d0c42 31 // open the PC serial port and (use the same baudrate)
ntaka206 0:1ababa0d0c42 32 Serial pc2(P4_28, P4_29);
ntaka206 0:1ababa0d0c42 33 pc2.baud(9600);
ntaka206 0:1ababa0d0c42 34
ntaka206 0:1ababa0d0c42 35 const int wait = 100;
ntaka206 0:1ababa0d0c42 36 bool abort = false;
ntaka206 0:1ababa0d0c42 37 double hdop=99.99;
ntaka206 1:cecf9bdf045b 38 double hgeo=99.99;
ntaka206 1:cecf9bdf045b 39 double hsea=99.99;
ntaka206 0:1ababa0d0c42 40 while (!abort) {
ntaka206 0:1ababa0d0c42 41 while ((ret = gps.getMessage(buf, sizeof(buf))) > 0)
ntaka206 0:1ababa0d0c42 42 {
ntaka206 0:1ababa0d0c42 43 int len = LENGTH(ret);
ntaka206 0:1ababa0d0c42 44 // TRACE("NMEA: %.*s\r\n", len-2, buf);
ntaka206 0:1ababa0d0c42 45 // pc2.printf("NMEA: %.*s\r\n", len-2, buf);
ntaka206 0:1ababa0d0c42 46 if ((PROTOCOL(ret) == GPSParser::NMEA) && (len > 6))
ntaka206 0:1ababa0d0c42 47 {
ntaka206 0:1ababa0d0c42 48 if (!strncmp("$GPGLL", buf, 6))
ntaka206 0:1ababa0d0c42 49 {
ntaka206 0:1ababa0d0c42 50 double la = 0, lo = 0;
ntaka206 0:1ababa0d0c42 51 double utc;
ntaka206 0:1ababa0d0c42 52 char ch;
ntaka206 1:cecf9bdf045b 53 char outbuf[256];
ntaka206 0:1ababa0d0c42 54 if (gps.getNmeaAngle(1,buf,len,la) &&
ntaka206 0:1ababa0d0c42 55 gps.getNmeaAngle(3,buf,len,lo) &&
ntaka206 0:1ababa0d0c42 56 gps.getNmeaItem(5,buf,len,utc) &&
ntaka206 0:1ababa0d0c42 57 gps.getNmeaItem(6,buf,len,ch) && ch == 'A')
ntaka206 0:1ababa0d0c42 58 {
ntaka206 1:cecf9bdf045b 59 sprintf(outbuf, "%06d,%.6f,%.6f,%.2f,%.1f,%.1f\r\n", (long)utc, la, lo, hdop, hsea, hgeo);
ntaka206 1:cecf9bdf045b 60 TRACE(outbuf);
ntaka206 1:cecf9bdf045b 61 pc2.printf(outbuf);
ntaka206 0:1ababa0d0c42 62 }
ntaka206 0:1ababa0d0c42 63 }
ntaka206 1:cecf9bdf045b 64 else if (!strncmp("$GPGSA", buf, 6))
ntaka206 0:1ababa0d0c42 65 {
ntaka206 0:1ababa0d0c42 66 gps.getNmeaItem(16,buf,len,hdop);
ntaka206 0:1ababa0d0c42 67 }
ntaka206 1:cecf9bdf045b 68 else if (!strncmp("$GPGGA", buf, 6))
ntaka206 0:1ababa0d0c42 69 {
ntaka206 1:cecf9bdf045b 70 gps.getNmeaItem(9,buf,len,hsea);
ntaka206 1:cecf9bdf045b 71 gps.getNmeaItem(11,buf,len,hgeo);
ntaka206 0:1ababa0d0c42 72 }
ntaka206 0:1ababa0d0c42 73 }
ntaka206 0:1ababa0d0c42 74 }
ntaka206 0:1ababa0d0c42 75 wait_ms(wait);
ntaka206 0:1ababa0d0c42 76 }
ntaka206 0:1ababa0d0c42 77 gps.powerOff();
ntaka206 0:1ababa0d0c42 78 TRACE("Shutdown\r\n");
ntaka206 0:1ababa0d0c42 79 c027.gpsPower(false);
ntaka206 0:1ababa0d0c42 80 return 0;
ntaka206 0:1ababa0d0c42 81 }
ntaka206 0:1ababa0d0c42 82