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

Dependencies:   mbed

Committer:
takeuchi
Date:
Sun Jan 30 08:21:56 2011 +0000
Revision:
0:000fabec47ad

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
takeuchi 0:000fabec47ad 1 //GPS GT-720F Test04
takeuchi 0:000fabec47ad 2 #include "mbed.h"
takeuchi 0:000fabec47ad 3 #include "TextLCD0420.h"
takeuchi 0:000fabec47ad 4
takeuchi 0:000fabec47ad 5 #define ON 1
takeuchi 0:000fabec47ad 6 #define OFF 0
takeuchi 0:000fabec47ad 7
takeuchi 0:000fabec47ad 8 DigitalOut mled0(LED1);
takeuchi 0:000fabec47ad 9 DigitalOut mled1(LED2);
takeuchi 0:000fabec47ad 10
takeuchi 0:000fabec47ad 11 TextLCD lcd(p24, p25, p26, p27, p28, p29, p30,20,4); // rs, rw, e, d0, d1, d2, d3
takeuchi 0:000fabec47ad 12 Serial pc(USBTX, USBRX); // tx, rx
takeuchi 0:000fabec47ad 13 Serial gps(p9,p10);
takeuchi 0:000fabec47ad 14
takeuchi 0:000fabec47ad 15 int main() {
takeuchi 0:000fabec47ad 16
takeuchi 0:000fabec47ad 17 unsigned char c;
takeuchi 0:000fabec47ad 18 int i,rlock,stn;
takeuchi 0:000fabec47ad 19 char gps_data[256];
takeuchi 0:000fabec47ad 20 char ns,ew;
takeuchi 0:000fabec47ad 21 float time,hokui,tokei;
takeuchi 0:000fabec47ad 22
takeuchi 0:000fabec47ad 23 gps.baud(9600);
takeuchi 0:000fabec47ad 24 lcd.cls();
takeuchi 0:000fabec47ad 25 lcd.locate(0,0);
takeuchi 0:000fabec47ad 26 lcd.printf("*** GPS GT-720F ***");
takeuchi 0:000fabec47ad 27
takeuchi 0:000fabec47ad 28 while (1) {
takeuchi 0:000fabec47ad 29 i=0;
takeuchi 0:000fabec47ad 30 while(gps.getc()!='$'){
takeuchi 0:000fabec47ad 31 }
takeuchi 0:000fabec47ad 32
takeuchi 0:000fabec47ad 33 while( (gps_data[i]=gps.getc()) != '\r'){
takeuchi 0:000fabec47ad 34 i++;
takeuchi 0:000fabec47ad 35 if(i==256){
takeuchi 0:000fabec47ad 36 lcd.printf("*** Data read Error! ***\n");
takeuchi 0:000fabec47ad 37 i=255;
takeuchi 0:000fabec47ad 38 break;
takeuchi 0:000fabec47ad 39 }
takeuchi 0:000fabec47ad 40 }
takeuchi 0:000fabec47ad 41 gps_data[i]='\0';
takeuchi 0:000fabec47ad 42
takeuchi 0:000fabec47ad 43 if( sscanf(gps_data, "GPGGA,%f,%f,%c,%f,%c,%d,%d",&time,&hokui,&ns,&tokei,&ew,&rlock,&stn) >= 1){
takeuchi 0:000fabec47ad 44 if(rlock==1){
takeuchi 0:000fabec47ad 45 lcd.cls();
takeuchi 0:000fabec47ad 46 lcd.locate(0,0);
takeuchi 0:000fabec47ad 47 lcd.printf("*** GPS GT-720F ***");
takeuchi 0:000fabec47ad 48 lcd.locate(0,1);
takeuchi 0:000fabec47ad 49 lcd.printf("Lock(%d),Stn(%d)",rlock,stn);
takeuchi 0:000fabec47ad 50 // logitude
takeuchi 0:000fabec47ad 51 lcd.locate(0,2);
takeuchi 0:000fabec47ad 52 lcd.printf("Log:%4.5f",tokei);
takeuchi 0:000fabec47ad 53 //lcd.printf("Tokiei:%4.5f",tokei);
takeuchi 0:000fabec47ad 54 //Latitude
takeuchi 0:000fabec47ad 55 lcd.locate(0,3);
takeuchi 0:000fabec47ad 56 lcd.printf("Lat:%4.5f",hokui);
takeuchi 0:000fabec47ad 57 //lcd.printf("Hokui:%4.5f",hokui);
takeuchi 0:000fabec47ad 58
takeuchi 0:000fabec47ad 59 }
takeuchi 0:000fabec47ad 60 else{
takeuchi 0:000fabec47ad 61 lcd.locate(0,1);
takeuchi 0:000fabec47ad 62 lcd.printf("Lock(%d),Stn(%d)",rlock,stn);
takeuchi 0:000fabec47ad 63 lcd.locate(0,2);
takeuchi 0:000fabec47ad 64 for(i=0;i<40;i++){
takeuchi 0:000fabec47ad 65 lcd.printf("%c",gps_data[i]);
takeuchi 0:000fabec47ad 66 }
takeuchi 0:000fabec47ad 67 }
takeuchi 0:000fabec47ad 68 }//if
takeuchi 0:000fabec47ad 69 }//while
takeuchi 0:000fabec47ad 70 }//main
takeuchi 0:000fabec47ad 71
takeuchi 0:000fabec47ad 72
takeuchi 0:000fabec47ad 73