エレキジャックweb mbed入門用です。課題4 GPS Gt-720Fのデータを受信し、受信衛星の数を表示できる部分を追加するプログラムです。

Dependencies:   mbed

main.cpp

Committer:
takeuchi
Date:
2011-01-30
Revision:
0:000fabec47ad

File content as of revision 0:000fabec47ad:

//GPS GT-720F Test04
#include "mbed.h"
#include "TextLCD0420.h"

#define ON 1
#define OFF 0

DigitalOut mled0(LED1);
DigitalOut mled1(LED2);

TextLCD lcd(p24, p25, p26, p27, p28, p29, p30,20,4); // rs, rw, e, d0, d1, d2, d3
Serial pc(USBTX, USBRX); // tx, rx 
Serial gps(p9,p10);

int main() {

      unsigned char c;
      int i,rlock,stn;
      char gps_data[256];
      char ns,ew;
      float time,hokui,tokei;
      
      gps.baud(9600);
      lcd.cls();
      lcd.locate(0,0);
      lcd.printf("*** GPS GT-720F ***");    

    while (1) {
      i=0;
      while(gps.getc()!='$'){
      }
      
      while( (gps_data[i]=gps.getc()) != '\r'){
        i++;
        if(i==256){
           lcd.printf("*** Data read  Error! ***\n");
           i=255;
           break;
         }
      }
      gps_data[i]='\0';
      
      if( sscanf(gps_data, "GPGGA,%f,%f,%c,%f,%c,%d,%d",&time,&hokui,&ns,&tokei,&ew,&rlock,&stn) >= 1){
        if(rlock==1){
          lcd.cls();
          lcd.locate(0,0);
          lcd.printf("*** GPS GT-720F ***"); 
          lcd.locate(0,1);
          lcd.printf("Lock(%d),Stn(%d)",rlock,stn);  
         // logitude 
          lcd.locate(0,2);
          lcd.printf("Log:%4.5f",tokei);
          //lcd.printf("Tokiei:%4.5f",tokei);
         //Latitude
          lcd.locate(0,3);
          lcd.printf("Lat:%4.5f",hokui);
          //lcd.printf("Hokui:%4.5f",hokui);
          
        }
        else{
          lcd.locate(0,1);
          lcd.printf("Lock(%d),Stn(%d)",rlock,stn);
          lcd.locate(0,2);
          for(i=0;i<40;i++){
            lcd.printf("%c",gps_data[i]);
          }
        }
      }//if
    }//while
}//main