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@1:cecf9bdf045b, 2014-06-10 (annotated)
- 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?
User | Revision | Line number | New 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 |