2 -- LuaTools需要PROJECT和VERSION这两个信息
6 --注意:因使用了sys.wait()所有api需要在协程中使用
8 --[[注意:此处的PRODUCT_KEY仅供演示使用,不保证一直能用,量产项目中一定要使用自己在iot.openluat.com中创建的项目productKey]]
11 --[[本demo需要lbsLoc库与libnet库, 库位于script\libs, 需require]]
12 local lbsLoc
= require("lbsLoc")
15 _G
.sys
= require("sys")
16 --[[特别注意, 使用lbsLoc库需要下列语句]]
17 _G
.sysplus
= require("sysplus")
20 -- Air780E的AT固件默认会为开机键防抖, 导致部分用户刷机很麻烦
21 if rtos
.bsp() == "EC618" and pm
and pm
.PWK_MODE
then
22 pm
.power(pm
.PWK_MODE
, false)
26 -- 功能:获取基站对应的经纬度后的回调函数
27 -- 参数:-- result:number类型,0表示成功,1表示网络环境尚未就绪,2表示连接服务器失败,3表示发送数据失败,4表示接收服务器应答超时,5表示服务器返回查询失败;为0时,后面的5个参数才有意义
28 -- lat:string类型,纬度,整数部分3位,小数部分7位,例如031.2425864
29 -- lng:string类型,经度,整数部分3位,小数部分7位,例如121.4736522
31 -- time:string类型或者nil,服务器返回的时间,6个字节,年月日时分秒,需要转为十六进制读取
32 -- 第一个字节:年减去2000,例如2017年,则为0x11
33 -- 第二个字节:月,例如7月则为0x07,12月则为0x0C
34 -- 第三个字节:日,例如11日则为0x0B
35 -- 第四个字节:时,例如18时则为0x12
36 -- 第五个字节:分,例如59分则为0x3B
37 -- 第六个字节:秒,例如48秒则为0x30
38 -- locType:numble类型或者nil,定位类型,0表示基站定位成功,255表示WIFI定位成功
39 local function getLocCb(result
, lat
, lng
, addr
, time
, locType
)
40 log.info("testLbsLoc.getLocCb", result
, lat
, lng
)
43 log.info("服务器返回的时间", time
:toHex())
44 log.info("定位类型,基站定位成功返回0", locType
)
47 -- sys.publish("lbsloc_result", result, lat, lng)
50 sys
.taskInit(function()
51 sys
.waitUntil("IP_READY", 30000)
53 mobile
.reqCellInfo(15)
54 sys
.waitUntil("CELL_INFO_UPDATE", 3000)
55 lbsLoc
.request(getLocCb
)
61 -- 注意, 免费版的基站+wifi混合定位,大部分情况下只会返回基站定位的结果
63 -- sys.subscribe("WLAN_SCAN_DONE", function ()
64 -- local results = wlan.scanResult()
65 -- log.info("scan", "results", #results)
66 -- if #results > 0 then
68 -- for k,v in pairs(results) do
69 -- log.info("scan", v["ssid"], v["rssi"], v["bssid"]:toHex())
70 -- local bssid = v["bssid"]:toHex()
71 -- bssid = string.format ("%s:%s:%s:%s:%s:%s", bssid:sub(1,2), bssid:sub(3,4), bssid:sub(5,6), bssid:sub(7,8), bssid:sub(9,10), bssid:sub(11,12))
72 -- reqWifi[bssid]=v["rssi"]
74 -- lbsLoc.request(getLocCb,nil,nil,nil,nil,nil,nil,reqWifi)
76 -- lbsLoc.request(getLocCb) -- 没有wifi数据,进行普通定位
80 -- sys.taskInit(function()
81 -- sys.waitUntil("IP_READY", 30000)
84 -- mobile.reqCellInfo(15)
85 -- sys.waitUntil("CELL_INFO_UPDATE", 3000)
92 -- 用户代码已结束---------------------------------------------
95 -- sys.run()之后后面不要加任何语句!!!!!