S-240の電装班 GPSロガーのTP用のプログラム。機体に搭載する際は、LPC1114FN28に移植することを推奨。

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }}}