lbsLoc - lbsLoc 发送基站定位请求
作者:王城钧
一、概述
lbsloc 扩展库是合宙推出专注于提供免费的单基站定位服务。它通过模组采集数据、库封装请求、服务器解析返回位置信息,最终由用户回调处理结果。目前该 lbsloc 已经不再维护,如果对精度要求高,可以使用 airlbs 定位服务。
合宙 lbsloc、lbsloc2、airlbs 三个库介绍:
-- lbsloc 是异步回调接口,
-- lbsloc2 是是同步接口。
-- lbsloc比lbsloc2多了一个请求地址文本的功能。
-- lbsloc 和 lbsloc2 都是免费LBS定位的实现方式;
-- airlbs 扩展库是收费 LBS 的实现方式。
二、核心示例
1、核心示例是指:使用本库文件提供的核心 API,开发的基础业务逻辑的演示代码;
2、核心示例的作用是:帮助开发者快速理解如何使用本库,所以核心示例的逻辑都比较简单;
3、更加完整和详细的 demo,请参考 LuatOS 仓库 中各个产品目录下的 demo/lbsLoc
PRODUCT_KEY = "v32xEAKsGTIEQxtqgwCldp5aPlcnPs3K"--根据实际修改
local lbsLoc = require("lbsLoc")
lcoal function getLocCb(result, lat, lng, addr, time, locType)
log.info("testLbsLoc.getLocCb", result, lat, lng)
-- 获取经纬度成功, 坐标系WGS84
if result == 0 then
log.info("服务器返回的时间", time:toHex())
log.info("定位类型,基站定位成功返回0", locType)
end
end
local function loc_task()
sys.waitUntil("IP_READY", 30000)
while 1 do
mobile.reqCellInfo(15)
sys.waitUntil("CELL_INFO_UPDATE", 3000)
lbsLoc.request(getLocCb)
sys.wait(60000)
end
end
sys.taskInit(loc_task)
三、常量详解
核心库常量,顾名思义是由合宙 LuatOS 内核固件中定义的、不可重新赋值或修改的固定值,在脚本代码中不需要声明,可直接调用;
lbsloc 扩展库没有常量。
四、函数详解
lbsLoc.request(cbFnc,reqAddr,timeout,productKey,host,port,reqTime,reqWifi)
功能
发送基站定位请求
参数
cbFnc
参数含义:接收HTTP应答body数据过程中的回调函数;回调函数的格式为:
--lcoal function getLocCb(result, lat, lng, addr, time, locType)
-- log.info("testLbsLoc.getLocCb", result, lat, lng)
-- -- 获取经纬度成功, 坐标系WGS84
-- if result == 0 then
-- log.info("服务器返回的时间", time:toHex())
-- log.info("定位类型,基站定位成功返回0", locType)
-- end
--end
数据类型:function;
取值范围:无特别限制;
是否必选:必须传入此参数;
注意事项:回调函数是在task之外的业务逻辑中被执行的,在回调函数内部无法使用
参数示例:如下所示,定义了一个函数getLocCb就可以做为此参数传入;
--lbsLoc.request(getLocCb)
reqAddr
参数含义:表示是否请求服务器返回具体的位置字符串信息,已经不支持,填false或者nil;
数据类型:boolean;
取值范围:true或者false;
是否必选:可选传入此参数;
注意事项:暂无;
参数示例:暂无;
timeout
参数含义:请求超时时间,单位毫秒,默认20000毫秒;
数据类型:number;
取值范围:暂无;
是否必选:可选传入此参数;
注意事项:暂无;
参数示例:20000;
productKey
参数含义:合宙IOT网站上的产品KEY,如果在main.lua中定义了PRODUCT_KEY变量,则此参数可以传nil;
数据类型:string;
取值范围:暂无;
是否必选:可选传入此参数;
注意事项:暂无;
参数示例:暂无;
host
参数含义:服务器域名, 默认 "bs.openluat.com" ;
数据类型:string;
取值范围:暂无;
是否必选:可选传入此参数;
注意事项:暂无;
参数示例:"bs.openluat.com";
port
参数含义:服务器端口,默认12411,一般不需要设置;
数据类型:number;
取值范围:暂无;
是否必选:可选传入此参数;
注意事项:暂无;
参数示例:12411;
reqTime
参数含义:是否获取时间,默认false;
数据类型:boolean;
取值范围:true或者false;
是否必选:可选传入此参数;
注意事项:暂无;
参数示例:false;
返回值
nil
示例
PRODUCT_KEY = "v32xEAKsGTIEQxtqgwCldp5aPlcnPs3K"--根据实际修改
local lbsLoc = require("lbsLoc")
lcoal function getLocCb(result, lat, lng, addr, time, locType)
log.info("testLbsLoc.getLocCb", result, lat, lng)
-- 获取经纬度成功, 坐标系WGS84
if result == 0 then
log.info("服务器返回的时间", time:toHex())
log.info("定位类型,基站定位成功返回0", locType)
end
end
local function loc_task()
sys.waitUntil("IP_READY", 30000)
while 1 do
mobile.reqCellInfo(15)
sys.waitUntil("CELL_INFO_UPDATE", 3000)
lbsLoc.request(getLocCb)
sys.wait(60000)
end
end
sys.taskInit(loc_task)
五、产品支持说明
目前除 8101 系列外,其他合宙主流模组均支持 lbsloc 扩展库