全部文档
概述 硬件支持 快速开发指南 内核 驱动 通用组件 专业组件 常见问题

GNSS定位

​ 目前GNSS定位组件主要功能为:解析接收机输出的位置信息(NMEA0183格式),提供给其他应用使用;后续会增加RTK、AGNSS等功能;目前支持的GNSS接收机有泰斗、和芯星通和中科微;对于其他厂家的接收机,除了特有的设置启动模式等接口,开发者需要自行适配外,其余均可通用;

重要数据结构及API接口

枚举

typedef enum rcvr_reset_type{
    RCVR_COLD_START = 1,
    RCVR_WARM_START,
    RCVR_HOT_START,
}rcvr_reset_type_t;
定义 说明
RCVR_COLD_START 接收机冷启动
RCVR_WARM_START 接收机温启动
RCVR_HOT_START 接收机热启动

结构体

typedef struct {
    void         *pos_data;
    rcvr_prot_par parse_func;
}rcvr_prot_t;
参数 说明
pos_data 指向协议对应的定位数据
parse_func 协议的解析函数
typedef struct{
    os_task_t  *task;
    rcvr_prot_t prot_table[RCVR_PROT_MAX]; 
}rcvr_prot_parse_t;
参数 说明
task 接收机协议解析线程
prot_table 挂载的所有协议结构体
typedef struct rcvr_object
{ 
    os_device_t        *device;
    rcvr_prot_parse_t  *prot_parser;
    rcvr_ops_pfunc      ops_table[RCVR_OPS_MAX];
}rcvr_object_t;
参数 说明
device 挂载接收机的设备
prot_parser 接收机挂载的协议解析模块
ops_table 接收机的控制接口列表

API列表

接口 说明
rcvr_object_init 初始化接收机(会涉及相关参数的空间申请)
rcvr_object_deinit 反初始化接收机(会涉及相关参数的空间释放)
rcvr_object_get_by_name 通过名称获取对应的接收机
rcvr_object_destroy 销毁(动态申请的)接收机
get_rcvr_data 获取接收机的数据
rcvr_reset 控制接收机按照特定启动模式重启
rcvr_object_init
os_err_t rcvr_object_init(rcvr_object_t *self, const char *name, const char* device_name)
参数 说明
self 指向接收机实体的指针
name 接收机名称
device_name 接收机挂载的设备名称
返回 说明
os_err_t 返回相应的错误值
rcvr_object_deinit
os_err_t rcvr_object_deinit(rcvr_object_t *rcvr)
参数 说明
self 指向接收机实体的指针
返回 说明
OS_EOK 去初始化成功
rcvr_object_get_by_name
rcvr_object_t *rcvr_object_get_by_name(const char *name)
参数 说明
name 要获取的接收机的名称
返回 说明
非OS_NULL 指向接收机的指针(具体参见:rcvr_object_t定义)
OS_NULL 表明系统中没有此名称的接收机
rcvr_object_destroy
void rcvr_object_destroy(rcvr_object_t *rcvr)
参数 说明
rcvr 指向接收机实体的指针
get_rcvr_data
os_err_t get_rcvr_data(rcvr_object_t *rcvr, void *src, os_size_t src_size, rcvr_prot_type_t prot_type)
参数 说明
rcvr 指向接收机实体的指针
src 指向存储接收机结果的内存地址
src_size 存储接收机位置结果的内存大小(根据协议不同,所需的内存大小不相同)
prot_type 协议类型(目前仅支持nmea_0183协议)
返回 说明
os_err_t 返回相应的错误值
特别说明 nmea协议的数据中经纬度是使用ddmm格式表示的,可以调用rcvr_data_to_wgs84函数将该坐标转成更为通用的wgs84坐标;
NMEA0183协议的数据

根据不同的NMEA数据集封装了不同的结构体,这些语句集的结构体作为GNSS位置结构体的一个子集;目前支持的NMEA数据集有:RMC、GGA、GSV、GLL、GSA、VTG、ZDA。

typedef struct 
{
  nmea_rmc_t  rmc_frame;
  nmea_gga_t  gga_frame;
  nmea_gsv_t  gsv_frame;
  nmea_gll_t  gll_frame;
  nmea_gsa_t  gsa_frame;
  nmea_vtg_t  vtg_frame;
  nmea_zda_t  zda_frame;
  os_uint32_t valid_flag;
} nmea_t;
参数 说明
rmc_frame RMC数据集(推荐最低指定GNSS数据)
gga_frame GGA数据集(GPS定位信息,用于全球定位系统的定位数据)
gsv_frame GSV数据集(可见的GNSS卫星)
gll_frame GGL数据集(地理位置——经度/纬度)
gsa_frame GSA数据集(GPS精度因子与使用的卫星)
vtg_frame VTG数据集(地面航向与地面速度,水平航向与航速)
zda_frame ZDA数据集(时间与日期)
valid_flag 当前GNSS数据结构中有效数据集标志
rcvr_reset
os_err_t rcvr_reset(rcvr_object_t *rcvr, rcvr_reset_type_t reset_type)
参数 说明
rcvr 指向接收机的指针
reset_type 启动模式(参见:rcvr_reset_type_t定义)
返回 说明
os_err_t 返回相应的错误值

使用示例

参考components\position\sample目录下onepos_cmd.c文件中接口调用方式。

results matching ""

    No results matching ""