📄 gps.h
字号:
#define CURRENT_CHANNEL_ASSIGNMENT_DATA_REQUEST ( (unsigned char) 6 )#define NAVIGATION_DATA_REQUEST_USER_COORDINATES ( (unsigned char) ( 20 ) )#define NAVIGATION_DATA_REQUEST_GPS_COORDINATES ( (unsigned char) ( 21 ) )#define EPHEMERIS_REQUEST ( (unsigned char) ( 22 ) )#define MEASUREMENT_BLOCK_DATA_REQUEST ( (unsigned char) ( 23 ) )#define SATELLITE_VISIBILITY_DATA_AND_STATUS_REQUEST ( (unsigned char) ( 33 ) )#define DGPS_CONFIGURATION_REQUEST ( (unsigned char) ( 43 ) )#define SOFTWARE_IDENTIFICATION_INFORMATION_REQUEST ( (unsigned char) ( 45 ) )#define DIFFERENTIAL_MESSAGE_STATUS_REQUEST ( (unsigned char) ( 48 ) )#define INITIATE_LINK ( (unsigned char) 63 )#define SET_OPERATING_MODE ( (unsigned char) 80 )#define SET_GPS_CONFIGURATION ( (unsigned char) 83 )#define SELECT_DEFINE_DATUM ( (unsigned char) 88 )#define SET_DIFFERENTIAL_MESSAGE_CONFIGURATION ( (unsigned char) 91 )#define ERASE_MEMORY ( (unsigned char) 99 )#define CONFIGURE_MAIN_PORT_MODE ( (unsigned char) 110 )#define TEN_HERTZ 3#define FIVE_HERTZ 2#define TWO_HERTZ 1#define ONE_HERTZ 0#define GET_CHANNEL_ASSIGNMENT REQUEST0(CURRENT_CHANNEL_ASSIGNMENT_DATA_REQUEST)#define GET_USER_NAVIGATION REQUEST0(NAVIGATION_DATA_REQUEST_USER_COORDINATES)#define GET_GPS_NAVIGATION REQUEST0(NAVIGATION_DATA_REQUEST_GPS_COORDINATES )#define GET_EPHEMERIS REQUEST0(EPHEMERIS_REQUEST )/*#define GET_BLOCK_DATA REQUEST1(MEASUREMENT_BLOCK_DATA_REQUEST,TEN_HERTZ)*/#define GET_BLOCK_DATA REQUEST1(MEASUREMENT_BLOCK_DATA_REQUEST,ONE_HERTZ)#define GET_VISIBILITY_DATA REQUEST0(SATELLITE_VISIBILITY_DATA_AND_STATUS_REQUEST)#define GET_GPS_CONFIGURATION REQUEST0(DGPS_CONFIGURATION_REQUEST)#define GET_SOFTWARE_IDENTIFICATION REQUEST0(SOFTWARE_IDENTIFICATION_INFORMATION_REQUEST)#define GET_DIFFERENTIAL_MESSAGE_STATUS REQUEST0(DIFFERENTIAL_MESSAGE_STATUS_REQUEST)#define SET_GPS_CONFIG set_dgps_configuration(fd)#define SET_DATUM select_define_datum( fd, (unsigned char) datum )#define CURRENT_CHANNEL_ASSIGNMENT_DATA_1_6 ( (unsigned char) 6 )#define CURRENT_CHANNEL_ASSIGNMENT_DATA_7_12 ( (unsigned char) 7 )#define NAVIGATION_DATA_USER_COORDINATES ( (unsigned char) 20 )#define NAVIGATION_DATA_GPS_COORDINATES ( (unsigned char) 21 )#define EPHEMERIS_DATA ( (unsigned char) 22 )#define MEASUREMENT_BLOCK_DATA ( (unsigned char) 23 )#define SATELLITE_VISIBILITY_DATA_AND_STATUS ( (unsigned char) 33 )#define DGPS_CONFIGURATION ( (unsigned char) 43 )#define SOFTWARE_IDENTIFICATION_INFORMATION ( (unsigned char) 45 )#define DIFFERENTIAL_MESSAGE_STATUS ( (unsigned char) 48 )#define ACKNOWLEDGE_MESSAGE ( (unsigned char) 126 )#define REQUEST0(R) simple_request(fd, &mb, R)#define REQUEST1(R,H) simple_request1(fd, &mb, R, H)typedef unsigned short CHECKSUM_TYPE;typedef struct{ int port; unsigned char header_buf[4]; int SOH; int ID; /* only seven bits */ int MSB_ID; int Cmpl_ID; int Msg_Data_Length; unsigned char Data[128]; int CheckSum;} MessageBlock;typedef struct { unsigned char SOH; unsigned char Id; unsigned char NId; unsigned char Seq; } HEADER_TYPE;typedef struct { unsigned char SV; unsigned char Bytes[72]; } RAW_EPHEM_TYPE;typedef struct { unsigned long Word3; unsigned long Word4; unsigned long Word5; unsigned long Word6; unsigned long Word7; unsigned long Word8; unsigned long Word9; unsigned long Word10; } SUBFRAME_ARRAY_TYPE;typedef struct { double X; double Y; double Z; } SV_XYZ_POS_TYPE;typedef struct { unsigned char Hours; /* 1 1 */ /* bit 5 = 1 = True : Time not corrected by UTC parameters */ /* bits 6-7 : reserved */ unsigned char Minutes; /* 1 2 */ double Seconds; /* 8 10 */ unsigned char Day; /* 1 11 */ /* bits 5-7 : reserved */ unsigned char Month; /* 1 12 */ unsigned short Year; /* 2 14 */ double Latitude; /* 8 22 */ /* -PI/2 -> PI/2 */ double Longitude; /* 8 30 */ /* -PI -> PI */ float Altitude; /* 4 34 */ float Speed; /* 4 38 */ /* Ground Speed in m/s */ float Angle; /* 4 42 */ /* Track Angle -PI -> PI */ float N_Vel; /* 4 46 */ /* m/s */ float E_Vel; /* 4 50 */ /* m/s */ float V_Vel; /* 4 54 */ /* m/s */ float HFOM; /* 4 58 */ float VFOM; /* 4 62 */ unsigned short HDOP; /* 2 64 resolution 0.1 units */ unsigned short VDOP; /* 2 66 resolution 0.1 units */ unsigned char Nav_Mode; /* 1 67 */ /* bits 0-> 4 NAV mode 0 - Init requited 1 - Initialised 2 - Nav 3-D 3 - Alt. Hold (2-D) 4 - Diff 3-D 5 - Diff 3-D 6 - Dead Reckoning bit 5 solution confidence level 0 - Normal ( < 5 SVs) 1 - High ( >= 5 SVs) bit 6 reserved bit 7 GPS Time Alignent Mode 1 - Enable 0 - Disable */ unsigned char Nb_SV; /* 1 68 */ /* bits 0 -> 3 - no of SVs for solution */ /* bits 4 -> 7 coordinate system - lowest nibble */ unsigned char Sys_Mode; /* 1 69 */ /* bits 4 -> 5 oordinate system - highest nibble */ /* bit 7 : reserved */ /* DATA = B69 b5, b4, B68 b7,b6,b5,b4 */ unsigned char Reserved1; /* 1 70 */ unsigned char Reserved2; /* 1 71 */ } NAV_USER_TYPE;typedef struct { double GPS_Time_Sec; /* 8 0->7 */ unsigned short Week; /* 2 8->9 */ double X_Pos; /* 8 10->17 */ double Y_Pos; /* 8 18->25 */ double Z_Pos; /* 8 26->33 */ float X_Vel; /* 4 34->37 */ float Y_Vel; /* 4 38->41 */ float Z_Vel; /* 4 42->45 */ double Clock_Bias; /* 8 46->53 */ double Clock_Drift; /* 8 54 */ float HFOM; /* 4 62 */ float VFOM; /* 4 66 */ unsigned short HDOP; /* 2 70 */ unsigned short VDOP; /* 2 72 */ unsigned char Nav_Mode; /* 1 74 */ unsigned char Nb_SV; /* 1 75 */ unsigned char Resv1; /* 1 76 */ unsigned char Resv2; /* 1 77 */ unsigned char Resv3; /* 1 78 */ CHECKSUM_TYPE Checksum; /* 2 79 */ } NAV_GPS_TYPE;typedef struct { unsigned char SV; /* 0 1 */ unsigned long Carrier_DCO; /* 1 4 */ float C_No; /* 5 4 */ float Reserved; /* 9 4 */ unsigned char Status; /* 13 1 */ } CHAN_ASSIGN_TYPE;typedef struct { unsigned char Set; /* 0 1 */ CHAN_ASSIGN_TYPE Chan[6]; /* 1 84 = 6 * 14 */ CHECKSUM_TYPE Checksum; /* 85 2 */ } CHANS_ASSIGN_TYPE;typedef struct { unsigned char SV; /* 0 1 */ unsigned char SNR; /* 1 1 */ unsigned long Code_Phase; /* 2 4 */ unsigned long ICP; /* 6 4 */ unsigned char Locktime; /* 10 1 */ } FAST_MEAS_BLOCK_TYPE; typedef struct { int port; signed char Reserved1; /* 0 1 */ signed char Reserved2; /* 1 1 */ unsigned char Nb_Blocks; /* 2 1 */ double GPS_Time; /* 3 8 */ FAST_MEAS_BLOCK_TYPE Block[12]; /* 11 (12 * 11) */ CHECKSUM_TYPE Checksum; /* 143 2 */ } FAST_MEAS_BLOCKS_TYPE;typedef struct { unsigned char String[80]; CHECKSUM_TYPE Checksum; } ERROR_LOG_TYPE;typedef struct { unsigned char SV_Num; /* 0 1 */ char Elevation; /* 1 1 -90 -> 90*/ short int Azimuth; /* 2 2 0 -> 360 bits 9->15 reserved */ char SNR; /* 4 1 0 -> 90 */ } Visibility_Datum;typedef struct { unsigned char N_SV; /* 0 1 */ Visibility_Datum vd[12]; /* 1 12 * 5 - listed in decreasing elevation order */ } Visibility_Data;typedef struct{ unsigned char status; /* 0 1 BIT 0 - ENABLE BIT 1-3 SHOULD BE 1 bit 4-6 should be 0 bit 7 port 0 = main, 1 =dedicated */ unsigned char Differential_Coast_Time; /* 1 1 */ unsigned char Reserved; /* 2 1 */ unsigned char Baud_Rate; /* 3 1 */ unsigned char Msg_Req_ReTrans[8]; /* 4 8 */ unsigned char Byte; /* 12 1 */ unsigned char Reserved8[8]; /* 13 8 */ } DGPS_Conf_Data;typedef struct{ char operational_sw_part_number[14]; /* 0 14 */ char reserved_string[18]; /* 14 18 */ char boot_sw_part_number[14]; /* 32 14 */ char reserved40[40]; /* 46 40 */ int boot_checksum; /* 86 4 */ int operational_checksum; /* 90 4 */ char reserved; /* 94 1 */} SW_Ident_Data;typedef struct{ unsigned char station_id_lo; /* 0 1 */ unsigned char station_id_hi; /* 1 1 */ unsigned char message_no_received[8]; /* 2 8 */ short int ValidWordCount; /* 10 2 */ short int ParityErrorCount; /* 12 2 */ char Reserved6[6]; /* 14 6 */ short int ZCount; /* 20 2 */ short int Reserved; /* 22 2 */ short int checksum; /* 24 2 */} Diff_Mesg_Data;#define SELECT_DATUM ((unsigned char) 0 )#define DEFINE_USER_DEFINED__DATUM ((unsigned char) 1 )#define SELECT_AND_DEFINE_USER_DEFINED_DATUM ((unsigned char) 2 )typedef struct{ unsigned char function; /* 0 1 */ unsigned char datum_number; /* 1 1 */ short int dx; /* 2 2 */ short int dy; /* 4 2 */ short int dz; /* 6 2 */ double a; /* 8 8 */ /* 8 bytes missing here */ unsigned char Reserved[8]; /* 24 8 */} Datum_Data;/*--------------------------------------------------------------------------Data use to compute satellite position and velocity---------------------------------------------------------------------------*//* -- Factors of the series expansion of the true anomaly V. */typedef enum { NO_DATA=0, ALMANAC=1, EPHEMERID=2 } SV_DATA_SOURCE_TYPE;typedef struct { double Root_A; double del_N; /* extended by David to carry raw ephemeris */ double N; double C0; double W; /* extended by David to carry raw ephemeris */ double Sin_W; double Cos_W; double I_Dot; double Omega_Dot; double Crc; double I_0; double Cis; double Omega_0; double Cic; double Toe; double Cus; double E; double Cuc; double M0; double Crs; unsigned char Curve_Interval; SV_DATA_SOURCE_TYPE SV_Data_Source; unsigned long IODE; unsigned char Valid_Ephem_Decoded; } ORBIT_PARAMETERS_TYPE;typedef struct { double Af0; double Af1; double Af2; double Toc; double Tgd; } CLOCK_PARAMETERS_TYPE;extern int got_block_data[40];extern int got_ephemeris_data[40];extern char * nav_mode_names[32];extern char * system_mode_names[16];extern char * tracking_state_name[4];extern char * allocation_state_name[4];extern char * carrier_phase_staus_name[4];extern char * sv_status_name[4];extern char * dgps_status_name[8];extern int messages_back[];extern unsigned char Ephem_Avaliable[];void Get_Visibility(MessageBlock * mb);void Get_GPS_Configuration(MessageBlock * mb);void select_define_datum(int fd, unsigned char datum);void configure_main_port(int fd,int datum);void set_operating_mode(int fd, int datum, double hours);/* 51 degrees 52' 22.1" N 0 degrees 57' 10.0" E*/ #define MY_LAT ( 51.0 + (52.0 / 60.0) + (22.1/3600.0) )#define MY_LON ( 0.0 + (57.0 / 60.0) + (10.0/3600.0) )#define MY_ALT 40.0#define REFERENCE_PORT 0#define MOBILE_PORT 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -