fix: net_lwip2_check_network_ready在idf5下联网失败会崩
[LuatOS.git] / demo / lbsLoc / main.lua
blobe48a491faadf20ef83ecdfa5b68e13cfa69976af
2 -- LuaTools需要PROJECT和VERSION这两个信息
3 PROJECT = "lbsLocdemo"
4 VERSION = "1.0.0"
6 --注意:因使用了sys.wait()所有api需要在协程中使用
8 --[[注意:此处的PRODUCT_KEY仅供演示使用,不保证一直能用,量产项目中一定要使用自己在iot.openluat.com中创建的项目productKey]]
9 PRODUCT_KEY = ""
11 --[[本demo需要lbsLoc库与libnet库, 库位于script\libs, 需require]]
12 local lbsLoc = require("lbsLoc")
14 -- sys库是标配
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)
23 end
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
30 -- addr:目前无意义
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)
41 -- 获取经纬度成功
42 if result == 0 then
43 log.info("服务器返回的时间", time:toHex())
44 log.info("定位类型,基站定位成功返回0", locType)
45 end
46 -- 广播给其他需要定位数据的task
47 -- sys.publish("lbsloc_result", result, lat, lng)
48 end
50 sys.taskInit(function()
51 sys.waitUntil("IP_READY", 30000)
52 while 1 do
53 mobile.reqCellInfo(15)
54 sys.waitUntil("CELL_INFO_UPDATE", 3000)
55 lbsLoc.request(getLocCb)
56 sys.wait(60000)
57 end
58 end)
60 -- -- 以下为基站+wifi混合定位
61 -- 注意, 免费版的基站+wifi混合定位,大部分情况下只会返回基站定位的结果
62 -- 收费版本请咨询销售
63 -- sys.subscribe("WLAN_SCAN_DONE", function ()
64 -- local results = wlan.scanResult()
65 -- log.info("scan", "results", #results)
66 -- if #results > 0 then
67 -- local reqWifi = {}
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"]
73 -- end
74 -- lbsLoc.request(getLocCb,nil,nil,nil,nil,nil,nil,reqWifi)
75 -- else
76 -- lbsLoc.request(getLocCb) -- 没有wifi数据,进行普通定位
77 -- end
78 -- end)
80 -- sys.taskInit(function()
81 -- sys.waitUntil("IP_READY", 30000)
82 -- wlan.init()
83 -- while 1 do
84 -- mobile.reqCellInfo(15)
85 -- sys.waitUntil("CELL_INFO_UPDATE", 3000)
86 -- wlan.scan()
87 -- sys.wait(60000)
88 -- end
89 -- end)
92 -- 用户代码已结束---------------------------------------------
93 -- 结尾总是这一句
94 sys.run()
95 -- sys.run()之后后面不要加任何语句!!!!!