2018/06/18

Dependents:   library

GPS.h

Committer:
Tomo073
Date:
2018-06-08
Revision:
2:578f518a6a05
Parent:
1:2f131675f872
Child:
3:940fe222bab0

File content as of revision 2:578f518a6a05:

/*

  GYSFDMAXB(GPS受信機1pps出力付きみちびき対応)用ライブラリ
  written by ST
  緯度、経度、海抜、時間を出力
  他の処理と並行するなら割り込み処理を使用すべし
  ex:NVIC_SetPriority(UART2_IRQn,0); //0の部分で優先順位を決定
  readable == true のとき正しいデータが出力
  
  ※経度、緯度、海抜、時間の読み方
  lon,lat:ddmm.mmmm
  dd:度
  mm.mmmm:分(上一桁:10分、下一桁:1/10000分)
  
  time:hhmmss.000000
  hh.時
  mm.分
  ss.秒
  
  alt:mm.mmmm
  
  ※機能
  ・GPS(TX,RX); コンストラクタ、ピン宣言
  ・GPS::attach(関数名); 割り込み処理設定
  ・GPS::GetDefault(); 編集前データ出力(char)
  ・gps.GetData(); 編集データ出力(float gps.longtitude, float gps.latitude, float gps.time)
  ・gps.ExtractionData_FULL(); 編集データ出力(char* gps.longtitude, char* gps.latitude, char* gps.time)※未実装
  
  @code
  //----------------------------------------------------------------------------------------------------------------------------------------------------------
  //sample program(TERA TERMに出力)
  //----------------------------------------------------------------------------------------------------------------------------------------------------------
#include "mbed.h"
#include "GPS.h"

GPS gps(p28,p27); //(tx,rx)
Serial pc(USBTX, USBRX);

void getGPS(){
    //NVIC_SetPriority(UART2_IRQn,0); //割り込み優先順位(必要に応じて)
    gps.GetData(); //データ抽出
    if(gps.readable == true){ 
       pc.printf("longtitude:%f latitude:%f altitude:%f time:%f\r\n", gps.longtitude, gps.latitude, gps.altitude, gps.time); //書き込み(経度、緯度、時間)
    }
}

int main(){
    //pc.baud(115200); //mbedのボーレート(必要に応じて)
    gps.attach(getGPS); //割り込み(関数名)
    while(1){
        //gps.GetDefault(); //元のデータ
        //pc.printf("%c",gps.datadefault);  //書き込み
    }
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
  @endcode
  
*/

#ifndef GPS_H
#define GPS_H

#include "mbed.h"

#define GPSBAUD 9600//GPSのボーレート
#define ODR 10//max 10Hz 更新周期

class GPS {
  public:
    GPS(PinName gpstx,PinName gpsrx);
    
    bool readable;
    char datadefault;
    //char *longtitudeFULL, *latitudeFULL, *timeFULL, *altitudeFULL;
    float longtitude, latitude, time, altitude, times;
    
    void GPS::attach(void(*fn)());
    void GetDefault();
    void GetData();
    //void ExtractionData_FULL();
    
  private:
    Serial serial;
    char buf[100];
    //int Degrees, Minutes, Hours;
    float /*fDegrees,*/ fMinutes/*, Seconds, fHours*/;
    void gpscmd(char *command);
    void getstring(char DATA[]);
    void Initialization();
};

#endif