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

Dependencies:   SDFileSystem mbed

Fork of mbed_GPS_TP by Atsumi Toda

Committer:
Joeatsumi
Date:
Mon Sep 11 01:02:14 2017 +0000
Revision:
1:ac509e6b8e61
Parent:
0:7fe771d8b39a
?????????????????????

Who changed what in which revision?

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