Atsumi Toda
/
mbed_GPS_TP
S-240の電装班 GPSロガーのTP用のプログラム。機体に搭載する際は、LPC1114FN28に移植することを推奨。
main.cpp@0:7fe771d8b39a, 2017-09-03 (annotated)
- Committer:
- Joeatsumi
- Date:
- Sun Sep 03 11:54:59 2017 +0000
- Revision:
- 0:7fe771d8b39a
TBT S-240???TP?GPS???
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Joeatsumi | 0:7fe771d8b39a | 1 | //LPC1768での作動を確認。 |
Joeatsumi | 0:7fe771d8b39a | 2 | #include "mbed.h" |
Joeatsumi | 0:7fe771d8b39a | 3 | DigitalOut led(LED1); |
Joeatsumi | 0:7fe771d8b39a | 4 | LocalFileSystem local("local"); |
Joeatsumi | 0:7fe771d8b39a | 5 | |
Joeatsumi | 0:7fe771d8b39a | 6 | //機体に搭載する際には、LPC1768ではなく、LPC1114を使うと思うので、 |
Joeatsumi | 0:7fe771d8b39a | 7 | //LocalFileSystem ではなく、sdfilesystemを使うといいかも。 |
Joeatsumi | 0:7fe771d8b39a | 8 | |
Joeatsumi | 0:7fe771d8b39a | 9 | Serial gps(p9,p10);//9,10ピンをGPSの送受信に用いる。 |
Joeatsumi | 0:7fe771d8b39a | 10 | |
Joeatsumi | 0:7fe771d8b39a | 11 | int main(){ |
Joeatsumi | 0:7fe771d8b39a | 12 | |
Joeatsumi | 0:7fe771d8b39a | 13 | char rcv[256]; |
Joeatsumi | 0:7fe771d8b39a | 14 | int count=0; |
Joeatsumi | 0:7fe771d8b39a | 15 | int log_count=0; |
Joeatsumi | 0:7fe771d8b39a | 16 | FILE*fp; |
Joeatsumi | 0:7fe771d8b39a | 17 | |
Joeatsumi | 0:7fe771d8b39a | 18 | gps.baud(9600); //gpsのボーレート設定 |
Joeatsumi | 0:7fe771d8b39a | 19 | |
Joeatsumi | 0:7fe771d8b39a | 20 | |
Joeatsumi | 0:7fe771d8b39a | 21 | while(1){ |
Joeatsumi | 0:7fe771d8b39a | 22 | if(gps.readable()){//GPSからの文字を受信したら |
Joeatsumi | 0:7fe771d8b39a | 23 | |
Joeatsumi | 0:7fe771d8b39a | 24 | rcv[count]=gps.getc(); |
Joeatsumi | 0:7fe771d8b39a | 25 | |
Joeatsumi | 0:7fe771d8b39a | 26 | if(rcv[count]=='$'){//$という文字を受信したら、 |
Joeatsumi | 0:7fe771d8b39a | 27 | rcv[0]='$'; |
Joeatsumi | 0:7fe771d8b39a | 28 | count=1; |
Joeatsumi | 0:7fe771d8b39a | 29 | }else{ |
Joeatsumi | 0:7fe771d8b39a | 30 | if(rcv[count-1]=='\r'&&rcv[count]=='\n'){ |
Joeatsumi | 0:7fe771d8b39a | 31 | rcv[count+1]='\0'; |
Joeatsumi | 0:7fe771d8b39a | 32 | |
Joeatsumi | 0:7fe771d8b39a | 33 | if(memcmp(rcv, "$GPRMC",6) == 0) {//$GPRMCという文字を10回取得すると記録する。 |
Joeatsumi | 0:7fe771d8b39a | 34 | |
Joeatsumi | 0:7fe771d8b39a | 35 | if(log_count >= 10) { |
Joeatsumi | 0:7fe771d8b39a | 36 | |
Joeatsumi | 0:7fe771d8b39a | 37 | log_count=0; |
Joeatsumi | 0:7fe771d8b39a | 38 | led=1; |
Joeatsumi | 0:7fe771d8b39a | 39 | fp=fopen("/local/nmea.log","a"); |
Joeatsumi | 0:7fe771d8b39a | 40 | if(fp != NULL){ |
Joeatsumi | 0:7fe771d8b39a | 41 | fprintf(fp,"%s",rcv); |
Joeatsumi | 0:7fe771d8b39a | 42 | fclose(fp); |
Joeatsumi | 0:7fe771d8b39a | 43 | } // if(log_count >= 10) ends |
Joeatsumi | 0:7fe771d8b39a | 44 | }else{ |
Joeatsumi | 0:7fe771d8b39a | 45 | led=0; |
Joeatsumi | 0:7fe771d8b39a | 46 | log_count++; |
Joeatsumi | 0:7fe771d8b39a | 47 | }//else ends |
Joeatsumi | 0:7fe771d8b39a | 48 | |
Joeatsumi | 0:7fe771d8b39a | 49 | } |
Joeatsumi | 0:7fe771d8b39a | 50 | count =0; |
Joeatsumi | 0:7fe771d8b39a | 51 | }else{ |
Joeatsumi | 0:7fe771d8b39a | 52 | count++; |
Joeatsumi | 0:7fe771d8b39a | 53 | } |
Joeatsumi | 0:7fe771d8b39a | 54 | } |
Joeatsumi | 0:7fe771d8b39a | 55 | }}} |