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