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

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 //LPC1768での作動を確認。
00002 #include "mbed.h"
00003 DigitalOut led(LED1);
00004 LocalFileSystem local("local");
00005 
00006 //機体に搭載する際には、LPC1768ではなく、LPC1114を使うと思うので、
00007 //LocalFileSystem ではなく、sdfilesystemを使うといいかも。
00008 
00009 Serial gps(p9,p10);//9,10ピンをGPSの送受信に用いる。
00010 
00011 int main(){
00012        
00013     char rcv[256];
00014     int count=0;
00015     int log_count=0;
00016     FILE*fp;
00017     
00018     gps.baud(9600); //gpsのボーレート設定
00019     
00020     
00021     while(1){
00022     if(gps.readable()){//GPSからの文字を受信したら
00023         
00024         rcv[count]=gps.getc();
00025         
00026         if(rcv[count]=='$'){//$という文字を受信したら、
00027             rcv[0]='$';
00028             count=1;
00029         }else{
00030             if(rcv[count-1]=='\r'&&rcv[count]=='\n'){
00031                 rcv[count+1]='\0';
00032                 
00033                 if(memcmp(rcv, "$GPRMC",6) == 0) {//$GPRMCという文字を10回取得すると記録する。
00034                          
00035                          if(log_count >= 10) {
00036                           
00037                           log_count=0;                 
00038                             led=1;                                  
00039                             fp=fopen("/local/nmea.log","a");
00040                                 if(fp != NULL){
00041                                 fprintf(fp,"%s",rcv);
00042                                 fclose(fp);                        
00043                     }    // if(log_count >= 10) ends
00044             }else{
00045                 led=0;
00046                 log_count++;
00047                 }//else ends
00048                 
00049             }
00050         count =0;
00051        }else{
00052         count++;
00053         }
00054     }
00055   }}}