终端配置
GNSS定位结果数据结构
根据不同的NMEA数据集封装了不同的结构体,这些语句集的结构体作为GNSS位置结构体的一个子集,可以通过相关宏定义来控制使用不同的子集;目前支持的NMEA数据集有:RMC、GGA、GSV、GLL、GSA、VTG、ZDA。
typedef struct
{
#if NMEA_SUPP_RMC
nmea_rmc_t rmc_frame;
#endif
#if NMEA_SUPP_GGA
nmea_gga_t gga_frame;
#endif
#if NMEA_SUPP_GSV
nmea_gsv_t gsv_frame;
#endif
#if NMEA_SUPP_GLL
nmea_gll_t gll_frame;
#endif
#if NMEA_SUPP_GSA
nmea_gsa_t gsa_frame;
#endif
#if NMEA_SUPP_VTG
nmea_vtg_t vtg_frame;
#endif
#if NMEA_SUPP_ZDA
nmea_zda_t zda_frame;
#endif
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数据结构中有效数据集标志 |
OnePos服务定位数据结构
typedef struct
{
os_uint32_t time;
double lat_coordinate;
double lon_coordinate;
} onepos_pos_t;
重要成员 |
说明 |
time |
定位时间(Unix时间戳,单位:s) |
lat_coordinate |
纬度 |
lon_coordinate |
经度 |
GNSS定位API列表
接口 |
说明 |
gnss_loca_start |
开启GNSS定位功能 |
get_gnss_data |
获取GNSS定位结果 |
get_gnss_data
os_bool_t get_gnss_data(nmea_t* nmea, gnss_data_flag_t get_data_type_flag)
参数 |
说明 |
nmea |
指向GNSS数据结构体,用来保存位置信息 |
get_data_type_flag |
要获取的数据集类别 |
返回 |
说明 |
os_bool_t |
成功获取返回true,获取超时返回false |
配置定位服务API接口
接口 |
说明 |
onepos_get_server_sta |
查询服务运行状态 |
onepos_get_server_type |
查询服务运行类型 |
onepos_set_server_type |
设置服务运行类型 |
onepos_get_pos_mode |
查询服务的定位方式 |
onepos_set_pos_mode |
设置服务的定位方法 |
onepos_get_pos_interval |
查询服务定位间隔(该间隔用于周期性定位的周期) |
onepos_set_pos_interval |
设置服务定位间隔(该间隔用于周期性定位的周期) |
onepos_start_server |
开启定位服务 |
onepos_stop_server |
停止定位服务 |
onepos_info_print |
打印定位结果 |
onepos_get_latest_position |
获取OnePos定位服务的定位结果 |
onepos_serv_sta_t onepos_get_server_sta(void)
返回 |
说明 |
onepos_serv_sta_t |
返回服务运行状态;包括: |
|
0 : ONEPOS_CLOSING // 服务已关闭 |
|
1 : ONEPOS_RUNING // 周期性定位正在运行 |
|
2 : ONEPOS_SIG_RUNING // 单次定位正在运行 |
|
3 : ONEPOS_WILL_CLOSE // 周期性定位即将关闭(在本次定位运行完成后将关闭) |
onepos_serv_type onepos_get_server_type(void)
返回 |
说明 |
onepos_serv_type |
服务运行类型;包括: |
|
0 : ONEPOS_CIRC_RUN // 周期性运行定位功能 |
|
1 : ONEPOS_SIG_RUN // 单次运行定位功能 |
os_bool_t onepos_set_server_type(onepos_serv_type type)
参数 |
说明 |
type |
要设置的服务运行类型 |
返回 |
说明 |
os_bool_t |
成功获取返回true,获取超时返回false |
onepos_pos_mode_t onepos_get_pos_mode(void)
返回 |
说明 |
onepos_pos_mode_t |
返回所使用的定位模式;包括: |
|
0 : ONEPOS_WIFI_POS_MODE // wifi定位模式 |
|
1 : ONEPOS_CELL_POS_MODE // 基站定位模式 |
os_bool_t onepos_set_pos_mode(onepos_pos_mode_t mode)
参数 |
说明 |
mode |
设置的定位模式 |
返回 |
说明 |
os_bool_t |
成功获取返回true,获取超时返回false |
os_uint16_t onepos_get_pos_interval(void)
返回 |
说明 |
os_uint16_t |
返回服务当前的定位周期(单位:s) |
os_bool_t onepos_set_pos_interval(os_uint16_t interval)
参数 |
说明 |
interval |
设置的定位周期时间(单位:s) |
返回 |
说明 |
os_bool_t |
成功获取返回true,设置失败返回false |
void onepos_info_print(ops_src_info_t *src_info, onepos_pos_mode_t mode)
参数 |
说明 |
src_info |
指向定位服务维护的位置结果的结构体,保存有定位结果 |
mode |
定位模式(选择要打印那种模式定位的结果) |
os_bool_t onepos_get_latest_position(onepos_pos_t *src_info)
参数 |
说明 |
src_info |
用于保存定位结果 |
返回 |
说明 |
os_bool_t |
成功获取返回true,获取超时返回false |
工程配置
使用cube工具进行工程配置,配置项包括:

配置项 |
说明 |
OS_USING_OnePos |
使能OnePos定位服务 |
ONEPOS_DEBUG |
使能调试模式 |
ONEPOS_GNSS_POS |
使能GNSS定位功能 |
NMEA_SERIAL_DEVICE_NAME |
GNSS设备使用的串口的名称 |
ONEPOS_WIFI_POS |
使能wifi定位功能 |
ONEPOS_WIFI_DEVICE_NAME |
使用的wifi设备 |
ONEPOS_CELL_POS |
使能基站定位功能 |
ONEPOS_CELL_DEVICE_NAME |
使用的蜂窝通信设备 |
ONEPOS_DEVICE_ID |
配置服务的Device ID(从OnePos定位平台申请获得) |
ONEPOS_PASSWORD |
配置服务的Password(密钥是由OnePos定位平台分配的设备key经过MD5加密得到) |
ONEPOS_COMM_REC_BUFF_LEN |
配置下行数据缓存空间大小 |
ONEPOS_COMM_SEND_BUFF_LEN |
配置上行数据缓存空间大小 |
ONEPOS_DEFAULT_INTERVAL |
配置周期性运行间隔 |
ONEPOS_DEVICE_REC_POS_INFO |
使能设备端获取定位结果功能 |
ONEPOS_REC_SUB_MSG_TIMEOUT |
配置与平台通信超时时间 |
ONEPOS_SUPP_REMOTE_CONF |
使能远程服务控制功能 |
ONEPOS_DEFAULT_POS_MODE |
服务默认的定位方式 |
ONEPOS_DEFAULT_SEV_TYPE |
服务默认的运行方式 |
ONEPOS_CMD |
使能服务的shell命令 |
依赖组件
OnePos服务依赖的其他组件包括:Paho MQTT、CJson、WIFI\蜂窝模组。
使用示例
参考components\position\source目录下onepos_cmd.c使用范例。