Skip to content

GNSS&LBS&Wi-Fi定位示例

场景描述

目前开发者中心位置服务支持 GNSS设备定位LBS定位WIFI定位,从而确定设备所在具体位置。本文将为您介绍如何获取与上报定位数据到开发者中心。

  • 全球导航卫星系统(GNSS) 连接外置GNSS模组实现卫星定位。
  • LBS定位 基于通信运营商的基站定位系统。
  • WIFI定位 基于无线路由器信号的定位系统。

涉及指令

函数说明
Ql_iotLocGetSupList()获取设备内置定位功能支持的NMEA语句类型
Ql_iotLocGetData()获取设备当前内置定位功能的定位数据
Ql_iotCmdBusLocReportInside()上报设备当前内置定位功能的定位数据
Ql_iotCmdBusLocReportInside_ex()上报设备当前内置定位功能的定位数据(仅 QuecThing SDK 2.10.0 及以后版本支持该函数)
Ql_iotCmdBusLocReportOutside()上报设备外置定位功能的定位数据
Ql_iotCmdBusLocReportOutside_ex()上报设备外置定位功能的定位数据(仅 QuecThing SDK 2.10.0 及以后版本支持该函数)

提示:详情请参考设备定位 相关接口

示例一(获取内置定位功能支持的NMEA类型)

获取内置定位功能支持的NMEA类型ttlv链表头指针,正常返回节点为定位支持的NMEA类型,若是NULL则表示获取失败。

c
  void *titleTtlv = Ql_iotLocGetSupList();
  Ql_iotTtlvFree(&titleTtlv);

注意:在添加物模型节点且调用完后,开发者请调用 Ql_iotTtlvFree() 函数,该函数会释放指针指向的一个内存块,从而避免内存泄漏等问题。

示例二(获取内置定位数据)

获取内置定位功能支持的NMEA类型ttlv链表头指针,正常返回节点是定位数据,若是NULL则表示获取失败。

c
  void *locDataTtlv = Ql_iotLocGetData(titleTtlv);
  Ql_iotTtlvFree(&titleTtlv);

提示:返回值在使用完成后需要调用函数Ql_iotTtlvFree()释放该变量

示例三(上报设备内置定位功能的定位数据)

1、上报模组内置的定位数据到开发者中心

c
  /* 发送内部定位数据 */
  void *titleTtlv = NULL;
  Ql_iotTtlvIdAddString(&titleTtlv, 0, "LBS");
  Ql_iotCmdBusLocReportInside(titleTtlv);
  Ql_iotTtlvFree(&titleTtlv);

提示:ttlv链表头指针在使用完成后需要调用函数Ql_iotTtlvFree()释放该变量

2、开发者中心查看设备定位

设备详情 详情页,单击 设备定位 页签可查看定位数据及地图位置。

img

示例四(上报设备外置定位功能的定位数据)

1、获取外置GNSS模组定位数据

通过MCU连接外置GNSS模组,GNSS模组接收到定位数据后会将NMEA数据打印到设备。例如外置GNSS模组获取到的NMEA数据为 $GPGGA,042523.0,3116.552,N,12138.7385,E,1,05,2.6,438.5,M,-28.0,M,,*78"

2、将获取到的定位数据上报到开发者中心

您可使用 Ql_iotCmdBusLocReportOutside() 函数可将外置定位模组获取到的NMEA数据上报到开发者中心。

c
  /* 发送外部定位数据 */
  void *nmeaTtlv=NULL;
  Ql_iotTtlvIdAddString(&nmeaTtlv,0,"$GPGGA,042523.0,3116.552,N,12138.7385,E,1,05,2.6,438.5,M,-28.0,M,,*78");
  Ql_iotCmdBusLocReportOutside(nmeaTtlv);
  Ql_iotTtlvFree(&nmeaTtlv);

3、开发者中心查看设备定位

设备详情 详情页,单击 设备定位 页签可查看定位数据及地图位置。

img

示例五(获取设备WIFI定位功能的定位数据)

1、获取模组WIFI定位的 操作类型 以及 NMEA 数据类型

c
  void *titleTtlv = Ql_iotLocGetSupList();
  Ql_iotTtlvFree(&titleTtlv);

2、获取模组WIFI的NMEA定位数据

c
  void *locDataTtlv = Ql_iotLocGetData(titleTtlv);
  Ql_iotTtlvFree(&titleTtlv);

示例六(上报WIFI定位功能的定位数据)

1、上报模组WIFI定位数据到开发者中心

c
  /* 发送内部定位数据 */
  void *titleTtlv = NULL;
  Ql_iotTtlvIdAddString(&titleTtlv, 0, "WiFi");
  Ql_iotCmdBusLocReportInside_ex(titleTtlv);
  Ql_iotTtlvFree(&titleTtlv);

2、开发者中心查看设备WiFi定位

设备详情 详情页,单击 设备定位 页签可查看定位数据及地图位置。

img