GNSS定位¶
Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.
功能概述¶
GNSS(Global Navigation Satellite System,全球导航卫星系统)是依托多轨道卫星无线电信号,为全球范围内设备提供高精度位置、运动速度与标准时间信息的卫星定位系统。主流GNSS系统包含 中国BDS北斗系统、美国GPS系统、俄罗斯GLONASS系统、欧盟Galileo系统 四大全球卫星导航体系,设备可兼容多系统联合定位,大幅提升定位可用性与精度。
GNSS定位核心原理为接收机同步接收多颗卫星广播信号,通过解析信号测距信息与卫星星历数据,解算设备终端的三维地理位置、运动状态及时间信息,是室外高精度定位的核心方案,可与LBS基站定位形成互补,适配全场景物联网定位需求。
基本组成要素¶
完整的GNSS卫星定位系统由卫星星座、地面控制段、用户接收机、卫星信号结构、定位解算算法五大核心要素构成,各模块协同完成卫星信号传输、校准与位置解算全流程。
卫星星座:由多颗卫星组成,分布在不同的轨道上,确保全球覆盖和定位精度。
地面控制段:监控卫星状态、上传星历和时钟修正数据。
用户接收机:接收卫星信号,解算位置、速度和时间信息。
卫星信号结构:GNSS卫星发射的无线电信号,包含测距码、导航数据和载波频率。
定位解算算法:通过接收多颗卫星的信号,计算接收机的位置坐标。
定位流程¶
GNSS定位为标准化端到端信号处理与数据解算流程,依托卫星信号传播、接收机信号处理、算法拟合修正,实现精准定位。完整流程分为五大核心步骤:
信号接收:接收机通过天线接收来自多颗GNSS卫星的无线电信号。信号包含测距码(C/A码、P码)、导航数据和载波频率。
信号处理:接收机对信号进行放大、滤波和下变频处理。通过相关器捕获和跟踪卫星信号,提取伪距和载波相位测量值。
位置解算:基于伪距测量值,通过最小二乘法或卡尔曼滤波算法计算接收机的位置坐标。GNSS三维定位需要至少 4颗卫星 的有效信号才能解算三维位置(经度、纬度、高度)和时间。
误差修正:针对卫星信号传播与设备解算过程中的固有误差,进行针对性补偿修正,主要修正项包含电离层信号延迟、对流层信号折射延迟、卫星钟差、相对论效应、轨道偏差等基础误差。高端场景可使用差分GNSS(DGNSS)或实时动态定位(RTK)技术提高定位精度。
输出结果:输出位置坐标(纬度、经度、高度)、速度、航向和时间信息。终端通过 NMEA 0183协议 输出标准化的定位数据语句。
GNSS NMEA语句详解¶
GGA语句¶
GGA语句格式定义
语句类型 |
格式定义 |
|---|---|
GGA |
$--GGA, |
示例:$GPGGA,060845.00,4004.74005,N,11614.19613,E,1,10,0.85,53.5,M,,M,,*7B |
GGA语句参数说明
参数 |
类型 |
描述 |
|---|---|---|
-- |
字符串 |
定位系统标识 |
<time> |
字符串 |
UTC时间;格式:hhmmss.ss |
<Lat> |
字符串 |
纬度;格式:ddmm.mmmmm |
<N> |
字符串 |
北纬或南纬指示 |
<Lon> |
字符串 |
经度;格式:dddmm.mmmmm |
<E> |
字符串 |
东经或西经指示 |
<FS> |
uint |
定位状态标识 |
<NoSV> |
uint |
参与定位的卫星数量 |
<HDOP> |
双精度浮点数 |
水平精度因子;范围:0.00~99.99;不定位时参数值为99.99 |
<msl> |
双精度浮点数 |
椭球高或海拔高;固定输出1位小数(CFGGEOID即高程配置为1) |
<M> |
字符串 |
椭球高单位或海拔高单位,参数值固定为 M;不定位时参数值为空 |
<Altref> |
双精度浮点数 |
海平面分离度;仅在CFGGEOID即高程配置为1时有效,否则参数值固定为空。 |
<M> |
字符串 |
海平面分离度单位,参数值固定为 M;不定位时参数值为空 |
<DiffAge> |
双精度浮点数 |
差分校正时延;单位:秒;非差分定位时参数值为空 |
<DiffStation> |
双精度浮点数 |
参考站ID;非差分定位时参数值为空 |
cs |
字符串 |
校验和;本条语句从’$‘到’*'之间的所有字符进行异或运算得到的十六进制数值 |
GLL语句¶
GLL语句格式定义
语句类型 |
格式定义 |
|---|---|
GLL |
$--GLL,< Lat>,< N>,< Lon>, |
|
示例:$GPGLL,4004.74005,N,11614.19613,E,060845.00,A,A*6F |
GLL语句参数说明
参数 |
类型 |
描述 |
|---|---|---|
-- |
字符串 |
定位系统标识 |
|
字符串 |
纬度;格式:ddmm.mmmmm |
|
字符串 |
北纬或南纬指示 |
|
字符串 |
经度;格式:dddmm.mmmmm |
|
字符串 |
东经或西经指示 |
|
字符串 |
UTC时间;格式:hhmmss.ss |
|
字符串 |
位置有效标识 |
|
字符串 |
定位系统模式标识 |
cs |
字符串 |
校验和;本条语句从’$‘到’*'之间的所有字符进行异或运算得到的十六进制数值 |
GSA语句¶
GSA语句格式定义
语句类型 |
格式定义 |
|---|---|
GSA |
$--GSA, |
示例:$GPGSA,A,3,02,03,06,09,12,17,19,23,28,25,,,1.34,0.85,1.04,1*1E |
GSA语句参数说明
参数 |
类型 |
描述 |
|---|---|---|
-- |
字符串 |
定位系统标识 |
|
字符串 |
定位模式指定状态 |
|
uint |
定位模式 |
|
uint |
参与定位的卫星号;参与定位的卫星不足12颗时,不足的区域为空;多于12颗时,只输出前12颗卫星 |
|
双精度浮点数 |
位置精度因子;范围:0.00~99.99;不定位时参数值为99.99 |
|
双精度浮点数 |
水平精度因子;范围:0.00~99.99;不定位时参数值为99.99 |
|
双精度浮点数 |
垂向精度因子;范围:0.00~99.99;不定位时参数值为99.99 |
|
uint |
NMEA协议定义的GNSS系统ID |
cs |
字符串 |
校验和;本条语句从’$‘到’*'之间的所有字符进行异或运算得到的十六进制数值 |
GSV语句¶
GSV语句格式定义
语句类型 |
格式定义 |
|---|---|
GSV |
$--GSV, |
|
示例:\(GPGSV,3,01,11,02,34,277,41,03,16,043,35,05,04,215,35,06,69,333,48,0*57<br> \)GPGSV,3,02,11,09,25,110,41,12,31,305,43,17,55,116,46,19,76,088,46,056 |
GSV语句参数说明
参数 |
类型 |
描述 |
|---|---|---|
-- |
字符串 |
定位系统标识 |
|
uint |
GSV语句总数;最小值为1;范围:01~ 99;参数值固定为两位,不足两位前面补零 |
|
uint |
本条GSV语句的编号;最小值为1;范围:01~ 99;参数值固定为两位,不足两位前面补零 |
|
uint |
本系统可见卫星的总数 |
|
uint |
第1至第4颗卫星的卫星号 |
|
uint |
第1至第4颗卫星的仰角;范围:0~90;单位:度;参数值固定为两位,不足两位前面补零 |
|
uint |
第1至第4颗卫星的方位角;范围:0~359;单位:度;参数值固定为三位,不足三位前面补零 |
|
uint |
第1至第4颗卫星的载噪比;范围:0~99;单位:dBHz;参数值固定为两位,不足两位前面补零;未跟踪的卫星,该参数值为空 |
|
uint |
NMEA协议定义的信号ID(参数值固定为0) |
cs |
字符串 |
校验和;本条语句从’$‘到’*'之间的所有字符进行异或运算得到的十六进制数值 |
RMC语句¶
RMC语句格式定义
语句类型 |
格式定义 |
|---|---|
RMC |
$--RMC, |
|
示例:$GPRMC,060845.00,A,4004.74005,N,11614.19613,E,,,180817,,,A,V*0B |
RMC语句参数说明
参数 |
类型 |
描述 |
|---|---|---|
-- |
字符串 |
定位系统标识 |
|
字符串 |
UTC时间;格式:hhmmss.ss |
|
字符串 |
位置有效标识 |
|
字符串 |
纬度;格式:ddmm.mmmmm |
|
字符串 |
北纬或南纬指示 |
|
字符串 |
经度;格式:dddmm.mmmmm |
|
字符串 |
东经或西经指示 |
|
双精度浮点数 |
地面速率;单位:节;从北向起顺时针计算;测速失败或静态场景速度极小时,参数值为空 |
|
双精度浮点数 |
地面航向;单位:度 |
|
字符串 |
UTC日期;格式:ddmmyy |
|
双精度浮点数 |
磁偏角;参数值固定为空 |
|
字符串 |
磁偏角方向;参数值固定为空 |
|
字符串 |
定位模式 |
|
字符串 |
导航状态标志 |
cs |
字符串 |
校验和;本条语句从’$‘到’*'之间的所有字符进行异或运算得到的十六进制数值 |
VTG语句¶
VTG语句格式定义
语句类型 |
格式定义 |
|---|---|
VTG |
$--VTG, |
|
示例:$GPVTG,,T,,M,0.000,N,0.000,K,A*23 |
VTG语句参数说明
参数 |
类型 |
描述 |
|---|---|---|
-- |
字符串 |
定位系统标识 |
|
双精度浮点数 |
以真北为参考基准的地面航向;范围:0.000~359.999;单位:度;测速失败或静态场景速度极小时,参数值为空 |
|
字符串 |
航向标志;参数值固定为 T |
|
双精度浮点数 |
以磁北为参考基准的地面航向;范围:0.000~359.999;单位:度;参数值默认为空 |
|
字符串 |
航向标志;参数值固定为 M |
|
双精度浮点数 |
地面速率;单位:节 |
|
字符串 |
速率单位;参数值固定为 N |
|
双精度浮点数 |
地面速率;单位:千米/时 |
|
字符串 |
速率单位;参数值固定为 K |
|
字符串 |
定位模式。 |
cs |
字符串 |
校验和;本条语句从’$‘到’*'之间的所有字符进行异或运算得到的十六进制数值 |
GST语句¶
GST语句格式定义
语句类型 |
格式定义 |
|---|---|
GST |
$--GST, |
|
示例:$GNGST,065909.57,,,,,,,*53 |
GST语句参数说明
参数 |
类型 |
描述 |
|---|---|---|
-- |
字符串 |
定位系统标识 |
|
字符串 |
UTC时间;格式:hhmmss.ss |
|
双精度浮点数 |
伪距误差的均方差;最大值为3750000;单位:米 |
|
双精度浮点数 |
误差椭圆的半长轴;固定值为空;单位:米 |
|
双精度浮点数 |
误差椭圆的半短轴;固定值为空;单位:米 |
|
双精度浮点数 |
误差椭圆的半长轴指向,从正北起顺时针,固定填空;单位:度 |
|
双精度浮点数 |
纬度方向的误差均方差;单位:米 |
|
双精度浮点数 |
经度方向的误差均方差;单位:米 |
|
双精度浮点数 |
高度方向的误差均方差;单位:米 |
cs |
字符串 |
校验和;本条语句从’$‘到’*'之间的所有字符进行异或运算得到的十六进制数值 |
GNSS API¶
头文件¶
qcm_gnss_api.h
函数概览¶
函数 |
说明 |
|---|---|
qcm_gnss_init() |
初始化GNSS功能 |
qcm_gnss_deinit() |
反初始化GNSS功能 |
qcm_gnss_start() |
启动GNSS定位服务 |
qcm_gnss_stop() |
停止GNSS定位服务 |
qcm_gnss_get_location() |
获取GNSS定位信息 |
qcm_gnss_get_nmeasrc_sentences() |
直接获取原始的NMEA语句 |
qcm_gnss_set_cfg() |
配置GNSS功能参数 |
qcm_gnss_get_cfg() |
获取当前的GNSS功能参数配置 |
qcm_gnss_set_reset_mode() |
设置GNSS重启模式 |
qcm_gnss_get_state() |
获取当前GNSS功能的状态 |
qcm_gnss_send_raw_data() |
向GNSS芯片发送原始命令 |
qcm_gnss_delete_assistance_data() |
删除GNSS辅助定位数据 |
qcm_gnss_get_version() |
获取GNSS版本信息 |
函数详解¶
qcm_gnss_init¶
功能描述
初始化GNSS功能。函数原型
qcm_gnss_err_e qcm_gnss_init(qcm_gnss_notify_cb_t status_cb, qcm_gnss_nmea_cb_t nmea_cb)
参数说明
参数名 |
输入/输出 |
类型 |
说明 |
|---|---|---|---|
status_cb |
输入 |
qcm_gnss_notify_cb_t |
GNSS状态通知回调函数;详见 qcm_gnss_notify_cb_t |
nmea_cb |
输入 |
qcm_gnss_nmea_cb_t |
NMEA语句回调函数;详见 qcm_gnss_nmea_cb_t |
返回值说明
详情请参考 qcm_gnss_err_e
qcm_gnss_notify_cb_t¶
功能描述
获取GNSS状态通知。函数原型
typedef void (*qcm_gnss_notify_cb_t)(qcm_gnss_notify_e notify, qcm_gnss_err_e error_code)
参数说明
参数名 |
输入/输出 |
类型 |
说明 |
|---|---|---|---|
notify |
输出 |
qcm_gnss_notify_e |
触发回调的事件类型;详见 qcm_gnss_notify_e |
error_code |
输出 |
qcm_gnss_err_e |
当前事件结果码类型;详见 qcm_gnss_err_e |
返回值说明
无
qcm_gnss_nmea_cb_t¶
功能描述
获取GNSS NMEA语句。函数原型
typedef void (*qcm_gnss_nmea_cb_t)(const char *nmea, int nmea_len)
参数说明
参数名 |
输入/输出 |
类型 |
说明 |
|---|---|---|---|
nmea |
输出 |
char |
NMEA语句 |
nmea_len |
输出 |
int |
NMEA语句长度;单位:字节 |
返回值说明
无
qcm_gnss_deinit¶
功能描述
反初始化GNSS功能。调用此函数后,GNSS功能将停止工作,所有相关资源将被释放。函数原型
qcm_gnss_err_e qcm_gnss_deinit(void)
参数说明
无返回值说明
详情请参考 qcm_gnss_err_e
qcm_gnss_start¶
功能描述
启动GNSS定位服务。建议在启动前先进行服务配置。函数原型
qcm_gnss_err_e qcm_gnss_start(void)
参数说明
无返回值说明
详情请参考 qcm_gnss_err_e
备注
此函数为异步接口,实际启动结果将通过 qcm_gnss_notify_cb_t() 回调函数的 QCM_GNSS_NOTIFY_START_EVT 事件通知。
qcm_gnss_stop¶
功能描述
停止GNSS定位服务。函数原型
qcm_gnss_err_e qcm_gnss_stop(void)
参数说明
无返回值说明
详情请参考 qcm_gnss_err_e
备注
此函数为异步接口,实际停止结果将通过 qcm_gnss_notify_cb_t() 回调函数的 QCM_GNSS_NOTIFY_STOP_EVT 事件通知。
qcm_gnss_get_location¶
功能描述
获取GNSS定位信息。函数原型
qcm_gnss_err_e qcm_gnss_get_location(qcm_gnss_location_t *location)
参数说明
参数名 |
输入/输出 |
类型 |
说明 |
|---|---|---|---|
location |
输出 |
qcm_gnss_location_t |
定位信息;详见 qcm_gnss_location_t |
返回值说明
详情请参考 qcm_gnss_err_e
备注
此函数为同步接口,调用后直接返回当前的定位信息。若GNSS尚未定位成功,将返回错误。
qcm_gnss_get_nmeasrc_sentences¶
功能描述
直接获取原始的NMEA语句。函数原型
qcm_gnss_err_e qcm_gnss_get_nmeasrc_sentences(qcm_gnss_nmeasrc_sentences_t *nmeasrc_sentences)
参数说明
参数名 |
输入/输出 |
类型 |
说明 |
|---|---|---|---|
nmeasrc_sentences |
输出 |
qcm_gnss_nmeasrc_sentences_t |
NMEA语句;详见 qcm_gnss_nmeasrc_sentences_t |
返回值说明
详情请参考 qcm_gnss_err_e
备注
此函数为同步接口,返回的数据为原始的NMEA语句格式,需要自行解析和处理。
qcm_gnss_set_cfg¶
功能描述
配置GNSS功能参数。函数原型
qcm_gnss_err_e qcm_gnss_set_cfg(qcm_gnss_cfg_t *cfg)
参数说明
参数名 |
输入/输出 |
类型 |
说明 |
|---|---|---|---|
cfg |
输入 |
qcm_gnss_cfg_t |
GNSS配置参数;详见 qcm_gnss_cfg_t |
返回值说明
详情请参考 qcm_gnss_err_e
备注
此函数为异步接口,配置完GNSS参数后,需要通过 qcm_gnss_notify_cb_t() 回调函数的 QCM_GNSS_NOTIFY_CFG_EVT 事件确认配置结果。
qcm_gnss_get_cfg¶
功能描述
获取当前的GNSS功能参数配置。函数原型
qcm_gnss_err_e qcm_gnss_get_cfg(qcm_gnss_cfg_t *cfg)
参数说明
参数名 |
输入/输出 |
类型 |
说明 |
|---|---|---|---|
cfg |
输出 |
qcm_gnss_cfg_t |
GNSS配置参数;详见 qcm_gnss_cfg_t |
返回值说明
详情请参考 qcm_gnss_err_e
备注
此函数为同步接口,调用后直接返回当前的GNSS参数配置。
qcm_gnss_set_reset_mode¶
功能描述
设置GNSS重启模式。函数原型
qcm_gnss_err_e qcm_gnss_set_reset_mode(qcm_gnss_reset_type_e reset_mode)
参数说明
参数名 |
输入/输出 |
类型 |
说明 |
|---|---|---|---|
reset_mode |
输入 |
qcm_gnss_reset_type_e |
GNSS重启模式;详见 qcm_gnss_reset_type_e |
返回值说明
详情请参考 qcm_gnss_err_e
备注
此函数为异步接口。
qcm_gnss_get_state¶
功能描述
获取当前GNSS功能的状态。函数原型
qcm_gnss_state_e qcm_gnss_get_state(void)
参数说明
无返回值说明
详情请参考 qcm_gnss_state_e
备注
此函数为同步接口,直接返回当前的GNSS状态。
qcm_gnss_send_raw_data¶
功能描述
向GNSS芯片发送原始命令。函数原型
qcm_gnss_err_e qcm_gnss_send_raw_data(char *cmd, int cmd_len)
参数说明
参数名 |
输入/输出 |
类型 |
说明 |
|---|---|---|---|
cmd |
输入 |
char |
GNSS原始命令字符串 |
cmd_len |
输入 |
int |
GNSS原始命令字符串长度;单位:字节 |
返回值说明
详情请参考 qcm_gnss_err_e
备注
此函数为异步接口,执行结果将通过 qcm_gnss_notify_cb_t() 回调函数的 QCM_GNSS_NOTIFY_SEND_RAW_DATA_EVT 事件通知。
qcm_gnss_delete_assistance_data¶
功能描述
删除GNSS辅助定位数据。函数原型
qcm_gnss_err_e qcm_gnss_delete_assistance_data(void)
参数说明
无返回值说明
详情请参考 qcm_gnss_err_e
备注
此函数为异步接口,执行结果将通过 qcm_gnss_notify_cb_t() 回调函数的 QCM_GNSS_NOTIFY_DEL_ASSIST_DATA_EVT 事件通知。
qcm_gnss_get_version¶
功能描述
获取GNSS版本信息。函数原型
qcm_gnss_err_e qcm_gnss_get_version(char *version, int len)
参数说明
参数名 |
输入/输出 |
类型 |
说明 |
|---|---|---|---|
version |
输出 |
char |
版本信息缓冲区指针 |
len |
输入 |
int |
缓冲区长度;单位:字节 |
返回值说明
详情请参考 qcm_gnss_err_e
备注
此函数为同步接口,执行后直接返回GNSS版本信息。
结构体定义¶
qcm_gnss_location_t¶
定位信息结构体定义如下:
typedef struct{
/* RMC */
int valid;
double latitude;
unsigned char latitude_cardinal;
double longitude;
unsigned char longitude_cardinal;
double speed;
double course;
qosa_rtc_time_t time;
/* GSA */
unsigned char mode;
int navmode;
double pdop;
double hdop;
double vdop;
/* GGA */
int satellites_tracked;
float altitude;
/* VTG */
double cogt;
unsigned char cogt_flag;
double cogm;
unsigned char cogm_flag;
double spkn;
unsigned char spkn_flag;
double spkm;
unsigned char spkm_flag;
unsigned char mode_indicator_flag;
} qcm_gnss_location_t
参数 |
类型 |
说明 |
|---|---|---|
valid |
int |
定位有效性 |
latitude |
double |
纬度 |
latitude_cardinal |
unsigned char |
N:北纬 |
longitude |
double |
经度 |
longitude_cardinal |
unsigned char |
E: 东经 |
speed |
double |
地面速度;单位:节 |
course |
double |
地面航向;单位:度 |
time |
qosa_rtc_time_t |
定位时间信息;详见 qosa_rtc_time_t |
mode |
unsigned char |
定位模式指定状态 |
navmode |
int |
定位模式 |
pdop |
double |
位置精度因子 |
hdop |
double |
水平精度因子 |
vdop |
double |
垂直精度因子 |
satellites_tracked |
int |
参与定位的卫星数量 |
altitude |
float |
海拔高度;单位:米 |
cogt |
double |
以真北为参考基准的地面航向;范围:0.000~359.999;单位:度 |
cogt_flag |
unsigned char |
航向标志;参数值固定为 T |
cogm |
double |
以磁北为参考基准的地面航向;范围:0.000~359.999;单位:度 |
cogm_flag |
unsigned char |
航向标志;参数值固定为 M |
spkn |
double |
地面速率;单位:节 |
spkn_flag |
unsigned char |
速率单位;参数值固定为 N |
spkm |
double |
地面速率;单位:千米/时 |
spkm_flag |
unsigned char |
速率单位;参数值固定为 K |
mode_indicator_flag |
unsigned char |
模式指示器标志 |
备注
1节 = 1海里/小时 = 1.852公里/小时
1公里/小时 = 0.54节
qcm_gnss_nmeasrc_sentences_t¶
NMEA语句结构体定义如下:
typedef struct{
char gga[QCM_GNSS_NMEA_LEN];
char rmc[QCM_GNSS_NMEA_LEN];
char gsv[QCM_CONSTEL_MAX][QCM_GNSS_GSV_NUM][QCM_GNSS_NMEA_LEN];
char gsa[QCM_GNSS_GSA_NUM][QCM_GNSS_NMEA_LEN];
char vtg[QCM_GNSS_NMEA_LEN];
char gll[QCM_GNSS_NMEA_LEN];
char gst[QCM_GNSS_NMEA_LEN];
} qcm_gnss_nmeasrc_sentences_t
参数 |
类型 |
说明 |
|---|---|---|
gga |
char |
GGA协议头原始语句字符串 |
rmc |
char |
RMC协议头原始语句字符串 |
gsv |
char |
GSV协议头原始语句字符串 |
gsa |
char |
GSA协议头原始语句字符串 |
vtg |
char |
VTG协议头原始语句字符串 |
gll |
char |
GLL协议头原始语句字符串 |
gst |
char |
GST协议头原始语句字符串 |
qcm_gnss_cfg_t¶
GNSS配置参数结构体定义如下:
typedef struct
{
qosa_bool_t constel_nmea[QCM_CONSTEL_MAX][QCM_NMEA_MAX];
qcm_gnss_multi_constel_e multi_constel;
qosa_uint32_t fix_count;
qcm_gnss_agps_cfg_t agps_cfg;
qcm_gnss_ntp_cfg_t ntp_cfg;
qosa_uint8_t simid;
qosa_uint8_t pdpcid;
qcm_gnss_reset_type_e reset_mode;
qosa_bool_t apflash_enable;
qosa_bool_t backup_power_enable;
qcm_gnss_bds_prefix_e bds_prefix;
qosa_bool_t debug_enable;
} qcm_gnss_cfg_t
参数 |
类型 |
说明 |
|---|---|---|
constel_nmea |
qosa_bool_t |
布尔类型的二维数组,用于指定卫星体系输出的NMEA语句开关;行索引对应卫星星系(详见 qcm_gnss_constel_e),列索引对应NMEA语句类型(详见 qcm_gnss_nmea_type_e) |
multi_constel |
qcm_gnss_multi_constel_e |
定位卫星组合;详见 qcm_gnss_multi_constel_e |
fix_count |
qosa_uint32_t |
定位次数;若为0,则表示持续定位 |
agps_cfg |
qcm_gnss_agps_cfg_t |
AGPS相关配置;详见 qcm_gnss_agps_cfg_t |
ntp_cfg |
qcm_gnss_ntp_cfg_t |
NTP相关配置;详见 qcm_gnss_ntp_cfg_t |
simid |
qosa_uint8_t |
SIM卡ID |
pdpcid |
qosa_uint8_t |
PDP ID |
reset_mode |
qcm_gnss_reset_type_e |
GNSS芯片启动模式;详见 qcm_gnss_reset_type_e |
apflash_enable |
qosa_bool_t |
AP-Flash使能开关;与备电功能互斥,不允许同时开启 |
backup_power_enable |
qosa_bool_t |
备电使能开关;与AP-Flash功能互斥,不允许同时开启 |
bds_prefix |
qcm_gnss_bds_prefix_e |
BDS北斗系统NMEA语句前缀;详见 qcm_gnss_bds_prefix_e |
debug_enable |
qosa_bool_t |
GNSS芯片调试模式开关 |
qcm_gnss_agps_cfg_t¶
AGPS相关配置结构体定义如下:
typedef struct
{
qosa_bool_t enable;
char url[QCM_GNSS_AGPS_URL_LEN];
char vendor_id[QCM_GNSS_AGPS_VENDOR_ID_LEN];
char model_id[QCM_GNSS_AGPS_MODEL_ID_LEN];
char password[QCM_GNSS_AGPS_PASSWORD_LEN];
} qcm_gnss_agps_cfg_t
参数 |
类型 |
说明 |
|---|---|---|
enable |
qosa_bool_t |
AGPS功能使能开关 |
url |
char |
AGPS服务器地址 |
vendor_id |
char |
供应商账号 |
model_id |
char |
用户账号 |
password |
char |
用户密码 |
qcm_gnss_ntp_cfg_t¶
NTP相关配置结构体定义如下:
typedef struct
{
qosa_bool_t enable;
char url[QCM_GNSS_NTP_URL_LEN];
int port;
} qcm_gnss_ntp_cfg_t
参数 |
类型 |
说明 |
|---|---|---|
enable |
qosa_bool_t |
NTP功能使能开关 |
url |
char |
NTP服务器地址 |
port |
int |
NTP端口号 |
qosa_rtc_time_t¶
定位时间信息结构体定义如下:
typedef struct
{
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
} qosa_rtc_time_t
参数 |
类型 |
说明 |
|---|---|---|
tm_sec |
int |
秒;范围:0~59 |
tm_min |
int |
分;范围:0~59 |
tm_hour |
int |
时;范围:0~23 |
tm_mday |
int |
日;范围:1~31 |
tm_mon |
int |
月;范围:0~11,0代表一月,11代表十二月 |
tm_year |
int |
年;自1900年起经过的年数 |
tm_wday |
int |
周几;范围:0~6,0代表周日 |
枚举定义¶
qcm_gnss_err_e¶
GNSS结果码枚举定义如下:
typedef enum
{
QCM_GNSS_ERR_OK = 0,
QCM_GNSS_ERR_UNKNOW = 1,
QCM_GNSS_ERR_INVAL_PARM = 2,
QCM_GNSS_ERR_NO_MEMORY = 3,
QCM_GNSS_ERR_NOT_INIT = 4,
QCM_GNSS_ERR_BUSY = 5,
QCM_GNSS_ERR_EXECUTE = 6,
QCM_GNSS_ERR_NOT_START = 7,
QCM_GNSS_ERR_NOT_RUN = 8,
QCM_GNSS_ERR_FIRMWARE = 9,
QCM_GNSS_ERR_PDP = 10,
QCM_GNSS_ERR_SOCKET = 11,
} qcm_gnss_err_e
成员 |
说明 |
|---|---|
QCM_GNSS_ERR_OK |
操作成功 |
QCM_GNSS_ERR_UNKNOW |
未知错误 |
QCM_GNSS_ERR_INVAL_PARM |
无效参数 |
QCM_GNSS_ERR_NO_MEMORY |
内存不足 |
QCM_GNSS_ERR_NOT_INIT |
未初始化 |
QCM_GNSS_ERR_BUSY |
资源繁忙 |
QCM_GNSS_ERR_EXECUTE |
执行失败 |
QCM_GNSS_ERR_NOT_START |
GNSS服务未开启 |
QCM_GNSS_ERR_NOT_RUN |
定位未运行 |
QCM_GNSS_ERR_FIRMWARE |
固件加载失败 |
QCM_GNSS_ERR_PDP |
PDP激活失败 |
QCM_GNSS_ERR_SOCKET |
Socket连接错误 |
qcm_gnss_constel_e¶
卫星星系枚举定义如下:
typedef enum
{
QCM_CONSTEL_GPS = 0,
QCM_CONSTEL_GLONASS = 1,
QCM_CONSTEL_GALILEO = 2,
QCM_CONSTEL_BDS = 3,
QCM_CONSTEL_MULTISYS = 4,
QCM_CONSTEL_MAX = 5,
} qcm_gnss_constel_e
成员 |
说明 |
|---|---|
QCM_CONSTEL_GPS |
美国GPS卫星系统 |
QCM_CONSTEL_GLONASS |
俄罗斯GLONASS卫星系统 |
QCM_CONSTEL_GALILEO |
欧盟Galileo卫星系统 |
QCM_CONSTEL_BDS |
中国BDS北斗卫星系统 |
QCM_CONSTEL_MULTISYS |
多星系联合定位 |
QCM_CONSTEL_MAX |
卫星星系枚举数量上限 |
qcm_gnss_nmea_type_e¶
NMEA语句类型枚举定义如下:
typedef enum
{
QCM_NMEA_GGA = 0,
QCM_NMEA_RMC = 1,
QCM_NMEA_GSA = 2,
QCM_NMEA_GSV = 3,
QCM_NMEA_VTG = 4,
QCM_NMEA_GLL = 5,
QCM_NMEA_TXT = 6,
QCM_NMEA_ZDA = 7,
QCM_NMEA_GNS = 8,
QCM_NMEA_GST = 9,
QCM_NMEA_MAX = 10,
} qcm_gnss_nmea_type_e
成员 |
说明 |
|---|---|
QCM_NMEA_GGA |
GGA语句 |
QCM_NMEA_RMC |
RMC语句 |
QCM_NMEA_GSA |
GSA语句 |
QCM_NMEA_GSV |
GSV语句 |
QCM_NMEA_VTG |
VTG语句 |
QCM_NMEA_GLL |
GLL语句 |
QCM_NMEA_TXT |
TXT语句 |
QCM_NMEA_ZDA |
ZDA语句 |
QCM_NMEA_GNS |
GNS语句 |
QCM_NMEA_GST |
GST语句 |
QCM_NMEA_MAX |
NMEA语句类型枚举总数上限 |
qcm_gnss_notify_e¶
触发回调的事件类型枚举定义如下:
typedef enum
{
QCM_GNSS_NOTIFY_CFG_EVT,
QCM_GNSS_NOTIFY_START_EVT,
QCM_GNSS_NOTIFY_STOP_EVT,
QCM_GNSS_NOTIFY_SEND_RAW_DATA_EVT,
QCM_GNSS_NOTIFY_DEL_ASSIST_DATA_EVT,
QCM_GNSS_NOTIFY_FIRMWARE_LOAD_EVT,
QCM_GNSS_NOTIFY_TRACK,
QCM_GNSS_NOTIFY_FIX_ACQUIRED,
QCM_GNSS_NOTIFY_FIX_LOST,
QCM_GNSS_NOTIFY_SYSTEM_TIME_UPDATE,
QCM_GNSS_NOTIFY_AGPS_UPDATE_EVT,
QCM_GNSS_NOTIFY_ERROR_RECOVERABLE,
QCM_GNSS_NOTIFY_ERROR_FATAL,
QCM_GNSS_NOTIFY_FIX_SESSION_DONE,
} qcm_gnss_notify_e
成员 |
说明 |
|---|---|
QCM_GNSS_NOTIFY_CFG_EVT |
配置参数设置成功通知 |
QCM_GNSS_NOTIFY_START_EVT |
GNSS服务启动状态通知 |
QCM_GNSS_NOTIFY_STOP_EVT |
GNSS服务停止状态通知 |
QCM_GNSS_NOTIFY_SEND_RAW_DATA_EVT |
发送原始命令完成通知 |
QCM_GNSS_NOTIFY_DEL_ASSIST_DATA_EVT |
删除辅助数据完成通知 |
QCM_GNSS_NOTIFY_FIRMWARE_LOAD_EVT |
固件加载结果通知 |
QCM_GNSS_NOTIFY_TRACK |
跟踪会话已启动通知 |
QCM_GNSS_NOTIFY_FIX_ACQUIRED |
有效定位获取通知 |
QCM_GNSS_NOTIFY_FIX_LOST |
定位丢失通知 |
QCM_GNSS_NOTIFY_SYSTEM_TIME_UPDATE |
系统时间更新通知 |
QCM_GNSS_NOTIFY_AGPS_UPDATE_EVT |
AGPS辅助数据更新通知 |
QCM_GNSS_NOTIFY_ERROR_RECOVERABLE |
可恢复错误通知 |
QCM_GNSS_NOTIFY_ERROR_FATAL |
致命不可恢复错误通知 |
QCM_GNSS_NOTIFY_FIX_SESSION_DONE |
跟踪会话完成通知 |
qcm_gnss_multi_constel_e¶
卫星定位组合枚举定义如下:
typedef enum{
QCM_MULTI_GP = 0,
QCM_MULTI_GP_GB_GL = 1,
QCM_MULTI_GP_GB_GA = 2,
QCM_MULTI_GP_GL_GA = 3,
QCM_MULTI_GP_GL = 4,
QCM_MULTI_GP_GB = 5,
QCM_MULTI_GP_GA = 6,
QCM_MULTI_GB = 7,
QCM_MULTI_GP_GB_GA_GL = 8,
} qcm_gnss_multi_constel_e
成员 |
说明 |
|---|---|
QCM_MULTI_GP |
GPS |
QCM_MULTI_GP_GB_GL |
GPS + BDS + GLONASS |
QCM_MULTI_GP_GB_GA |
GPS + BDS + Galileo |
QCM_MULTI_GP_GL_GA |
GPS + GLONASS + Galileo |
QCM_MULTI_GP_GL |
GPS + GLONASS |
QCM_MULTI_GP_GB |
GPS + BDS |
QCM_MULTI_GP_GA |
GPS + Galileo |
QCM_MULTI_GB |
BDS |
QCM_MULTI_GP_GB_GA_GL |
GPS + BDS + Galileo + GLONASS |
qcm_gnss_reset_type_e¶
GNSS芯片启动类型枚举定义如下:
typedef enum{
QCM_GNSS_RESET_COLD = 0,
QCM_GNSS_RESET_HOT = 1,
QCM_GNSS_RESET_WARM = 2,
} qcm_gnss_reset_type_e
成员 |
说明 |
|---|---|
QCM_GNSS_RESET_COLD |
冷启动 |
QCM_GNSS_RESET_HOT |
热启动 |
QCM_GNSS_RESET_WARM |
温启动 |
qcm_gnss_bds_prefix_e¶
BDS北斗系统NMEA语句前缀枚举定义如下:
typedef enum{
QCM_GNSS_BDS_PREFIX_PQ = 0,
QCM_GNSS_BDS_PREFIX_GB = 1,
QCM_GNSS_BDS_PREFIX_BD = 2,
} qcm_gnss_bds_prefix_e
成员 |
说明 |
|---|---|
QCM_GNSS_BDS_PREFIX_PQ |
语句前缀:PQ |
QCM_GNSS_BDS_PREFIX_GB |
语句前缀:GB |
QCM_GNSS_BDS_PREFIX_BD |
语句前缀:BD |
qcm_gnss_state_e¶
GNSS功能状态枚举定义如下:
typedef enum{
QCM_GNSS_STATE_IDLE,
QCM_GNSS_STATE_SYS_INIT,
QCM_GNSS_STATE_GNSS_INIT,
QCM_GNSS_STATE_TRACK,
QCM_GNSS_STATE_STOP,
QCM_GNSS_STATE_SYS_DEINIT
} qcm_gnss_state_e
成员 |
说明 |
|---|---|
QCM_GNSS_STATE_IDLE |
GNSS尚未启动且未进行初始化 |
QCM_GNSS_STATE_SYS_INIT |
系统初始化完成,已完成底层资源申请与系统级准备工作 |
QCM_GNSS_STATE_GNSS_INIT |
GNSS芯片正在上电并进行初始化 |
QCM_GNSS_STATE_TRACK |
GNSS功能正在跟踪卫星信号,同时解析定位数据 |
QCM_GNSS_STATE_STOP |
GNSS功能正在关闭 |
QCM_GNSS_STATE_SYS_DEINIT |
系统反初始化中,正在彻底关闭GNSS并释放占用的系统资源 |
应用逻辑流程图¶
示例代码¶
完整示例代码请查看 https://github.com/UniRTOS/UniRTOS-Doc-Examples/blob/main/network/location/gnss/gnss_demo.c