GPS module (GYSFDMAXB) 57600 bps

Dependencies:   Vector3

Dependents:   HAPS_GPS_Test_0001

GYSFDMAXB GPSセンサーGYSFDMAXBのライブラリ 57600 bps

手順 [1] シリアルピンを設定 GYSFDMAXB gps(tx_pin, rx_pin); [2] 零点を設定する(NED座標系における零点) gps.Initialize(); [3] 自動的にデータを受信しては更新していくので、適宜メンバ変数を読み込んで使う

GYSFDMAXB.hpp

Committer:
cocorlow
Date:
2021-04-23
Revision:
9:8595608c56ca
Parent:
8:9b573e4c4a85
Child:
10:8f574ff249bd

File content as of revision 9:8595608c56ca:

#ifndef __GYSFDMAXB_HPP__
#define __GYSFDMAXB_HPP__

#include "mbed.h"
#include "Vector3.hpp"

/*
$GPZDA,030049.971,06,04,2021,,*54
$GPGGA,030050.971,,,,,0,0,,,M,,M,,*41
$GPGLL,,,,,030050.971,V,N*73
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,1,1,00*79
$GPRMC,030050.971,V,,,,,0.00,0.00,060421,,,N*45
$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
$GPZDA,030050.971,06,04,2021,,*5C
$GPGGA,030051.971,,,,,0,0,,,M,,M,,*40
$GPGLL,,,,,030051.971,V,N*72
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,1,1,00*79
$GPRMC,030051.971,V,,,,,0.00,0.00,060421,,,N*44
$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
$GPZDA,030051.971,06,04,2021,,*5D
*/


class GYSFDMAXB
{
private:
    Serial serial;
    volatile bool receive_flag;
    const int start_size = 32;
    char* uart_start[start_size];
    volatile int start_index;
    const int uart_size = 4096;
    char uart_buffer[uart_size];
    volatile int uart_index;
    Ticker timer;
    
    static const float Radius = 6378136.6f;
    
    void Receive();
    void Punctuate();
    
public:
    // GPGGA
    int Quality;
    int Satellites;
    float HDOP;
    float Elevation;
    char UnitElevation;
    float GeoidElevation;
    char UnitGeoidElevation;
    
    // GPRMC
    int Hours;
    int Minutes;
    int Seconds;
    int Milliseconds;
    char Status;
    float Latitude;
    char N_S;
    float Longitude;
    char E_W;
    float Speed;
    float Direction;
    int Day;
    int Month;
    int Year;
    float GeomagneticDeclination ;
    char GeomagneticE_W; 
    char Mode;
    
    Vector3 UniversalZeroPosition;
    Vector3 UniversalZeroUnitN;
    Vector3 UniversalZeroUnitE;
    Vector3 UniversalZeroUnitD;
    Vector3 UniversalPosition;
    Vector3 Position;

    GYSFDMAXB(PinName tx, PinName rx);
    void Update();
    void Initialize();
    Vector3 ToUniversalUnit();
    Vector3 ToUniversal();
    void CalcurateUnit();
    void Calcurate();
    Vector3 Calcurate(Vector3 position);
};

extern Serial pc;

#endif