Просмотр исходного кода

fix: 完善Air8000 的整机UI的wifi ap 功能

梁健 9 месяцев назад
Родитель
Сommit
49ece4a763

+ 84 - 4
module/Air8000/demo/wlan/AP/main.lua

@@ -12,8 +12,13 @@ function test_ap()
     log.info("执行AP创建操作")
     wlan.createAP("uiot5678", "12345678")
     netdrv.ipv4(socket.LWIP_AP, "192.168.4.1", "255.255.255.0", "0.0.0.0")
-    sys.wait(5000)
+    while netdrv.ready(socket.LWIP_AP) ~= true do
+        sys.wait(100)
+    end
+    -- netdrv.ipv4(socket.LWIP_AP, "192.168.4.1", "255.255.255.0", "0.0.0.0")
+    -- log.info("创建dns代理", netdrv.ipv4(socket.LWIP_AP))
     dnsproxy.setup(socket.LWIP_AP, socket.LWIP_GP)
+    -- log.info('创建DHCP服务器', netdrv.ipv4(socket.LWIP_AP))
     dhcpsrv.create({adapter=socket.LWIP_AP})
     while 1 do
         if netdrv.ready(socket.LWIP_GP) then
@@ -24,24 +29,99 @@ function test_ap()
     end
 end
 
+-- wifi的STA相关事件
+sys.subscribe("WLAN_STA_INC", function(evt, data)
+    -- evt 可能的值有: "CONNECTED", "DISCONNECTED"
+    -- 当evt=CONNECTED, data是连接的AP的ssid, 字符串类型
+    -- 当evt=DISCONNECTED, data断开的原因, 整数类型
+    log.info("收到STA事件", evt, data)
+end)
 
 -- wifi的AP相关事件
 sys.subscribe("WLAN_AP_INC", function(evt, data)
+    -- evt 可能的值有: "CONNECTED", "DISCONNECTED"
+    -- 当evt=CONNECTED, data是连接的AP的新STA的MAC地址
+    -- 当evt=DISCONNECTED, data是断开与AP连接的STA的MAC地址
     log.info("收到AP事件", evt, data and data:toHex())
 end)
 
+function test_sta()
+    log.info("执行STA连接操作")
+    wlan.connect("luatos1234", "12341234")
+    -- netdrv.dhcp(socket.LWIP_STA, true)
+    sys.wait(8000)
+    iperf.server(socket.LWIP_STA)
+    -- iperf.client(socket.LWIP_STA, "47.94.236.172")
+
+    sys.wait(5000)
+    log.info("wlan mac", wlan.getMac())
+    local mac = string.fromHex("0E1122446688")
+    wlan.setMac(socket.LWIP_STA, mac)
+    -- while 1 do
+    --     -- log.info("MAC地址", netdrv.mac(socket.LWIP_STA))
+    --     -- log.info("IP地址", netdrv.ipv4(socket.LWIP_STA))
+    --     -- log.info("ready?", netdrv.ready(socket.LWIP_STA))
+    --     -- sys.wait(1000)
+    --     -- log.info("执行http请求")
+    --     -- local code = http.request("GET", "http://192.168.1.15:8000/README.md", nil, nil, {adapter=socket.LWIP_STA,timeout=3000}).wait()
+    --     local code, headers, body = http.request("GET", "https://httpbin.air32.cn/bytes/2048", nil, nil, {adapter=socket.LWIP_STA,timeout=5000,debug=false}).wait()
+    --     log.info("http执行结果", code, headers, body and #body)
+    --     -- socket.sntp(nil, socket.LWIP_STA)
+    --     sys.wait(2000)
+
+    --     -- socket.sntp(nil)
+    --     -- sys.wait(2000)
+    --     -- log.info("执行ping操作")
+    --     -- icmp.ping(socket.LWIP_STA, "183.2.172.177")
+    --     -- sys.wait(2000)
+    -- end
+end
+
 sys.subscribe("PING_RESULT", function(id, time, dst)
     log.info("ping", id, time, dst);
 end)
 
+function test_scan()
+    while 1 do
+        log.info("执行wifi扫描")
+        wlan.scan()
+        sys.wait(30 * 1000)
+    end
+end
+sys.subscribe("WLAN_SCAN_DONE", function ()
+    local results = wlan.scanResult()
+    log.info("scan", "results", #results)
+    for k,v in pairs(results) do
+        log.info("scan", v["ssid"], v["rssi"], (v["bssid"]:toHex()))
+    end
+end)
 
+--  每隔6秒打印一次airlink统计数据, 调试用
+-- sys.taskInit(function()
+--     while 1 do
+--         sys.wait(6000)
+--         airlink.statistics()
+--     end
+-- end)
 
 sys.taskInit(function()
-    log.info("新的Air8000脚本1...")
- 
-    wlan.init()
+    log.info("新的Air8000脚本...")
 
+    -- sys.wait(200) -- 稍微缓一下, Air8000S的启动大概需要300ms
+    -- 启动AP测试
+    -- netdrv.setup(socket.LWIP_STA, netdrv.WHALE)
+    -- netdrv.setup(socket.LWIP_AP, netdrv.WHALE)
+    wlan.init()
+    -- sys.wait(5000)
+    
+    -- sys.wait(300)
     test_ap()
+
+    -- 连接STA测试
+    -- test_sta()
+
+    -- wifi扫描测试
+    -- test_scan()
 end)
 
 

BIN
module/Air8000/project/整机开发板出厂工程/lib/start.jpg


BIN
module/Air8000/project/整机开发板出厂工程/lib/start_gps.jpg


BIN
module/Air8000/project/整机开发板出厂工程/lib/stop.jpg


BIN
module/Air8000/project/整机开发板出厂工程/lib/stop_gps.jpg


+ 10 - 6
module/Air8000/project/整机开发板出厂工程/user/airap.lua

@@ -6,7 +6,7 @@ httpplus = require("httpplus")
 local run_state = false
 local ap_state = false
 local wifi_net_state = "未打开"
-local ssid = "uiot"
+local ssid = "Air8000_"
 local password = "12345678"
 local number = 0
 local event = ""
@@ -18,8 +18,12 @@ local function start_ap()
     log.info("start_ap")
     ssid = ssid .. wlan.getMac()
     wlan.createAP(ssid, password)
+
     netdrv.ipv4(socket.LWIP_AP, "192.168.4.1", "255.255.255.0", "0.0.0.0")
-    sys.wait(5000)
+     while netdrv.ready(socket.LWIP_AP) ~= true do
+        sys.wait(100)
+    end
+    -- sys.wait(5000)
     dnsproxy.setup(socket.LWIP_AP, socket.LWIP_GP)
     dhcpsrv.create({adapter=socket.LWIP_AP})
     while 1 do
@@ -38,7 +42,7 @@ local function stop_ap()
 end
 
 sys.subscribe("WLAN_AP_INC", function(evt, data)
-    event = evt.. "," ..data
+    event = evt.. ",对方的MAC为:" .. data:toHex()
     if evt == "CONNECTED" then
         number = number + 1
     elseif evt == "DISCONNECTED" then
@@ -58,7 +62,7 @@ function airap.run()
     run_state = true
     while true do
         sys.wait(10)
-        airlink.statistics()
+        -- airlink.statistics()
         lcd.clear(_G.bkcolor) 
         lcd.drawStr(0,80,"WIFI AP状态:"..wifi_net_state )
         if ap_state then
@@ -71,9 +75,9 @@ function airap.run()
 
         lcd.showImage(20,360,"/luadb/back.jpg")
         if gps_is_run then
-            lcd.showImage(130,370,"/luadb/stop_gps.jpg")
+            lcd.showImage(130,370,"/luadb/stop.jpg")
         else
-            lcd.showImage(130,370,"/luadb/start_gps.jpg")
+            lcd.showImage(130,370,"/luadb/start.jpg")
         end
         
 

+ 4 - 4
module/Air8000/project/整机开发板出厂工程/user/airgps.lua

@@ -142,9 +142,9 @@ function airgps.run()       -- TTS 播放主程序
 
         lcd.showImage(20,360,"/luadb/back.jpg")
         if gps_is_run then
-            lcd.showImage(130,370,"/luadb/stop_gps.jpg")
+            lcd.showImage(130,370,"/luadb/stop.jpg")
         else
-            lcd.showImage(130,370,"/luadb/start_gps.jpg")
+            lcd.showImage(130,370,"/luadb/start.jpg")
         end
         
 
@@ -157,7 +157,7 @@ function airgps.run()       -- TTS 播放主程序
     end
 end
 
-local function stop_gps()
+local function stop()
     gnss.stop()
 end
 
@@ -166,7 +166,7 @@ function airgps.tp_handal(x,y,event)       -- 判断是否需要停止播放
         run_state = 0
     elseif x > 130 and  x < 241 and y > 370  and  y < 417 then
         if  gps_is_run then
-            sys.taskInit(stop_gps, "stop_gps")   
+            sys.taskInit(stop, "stop")   
         else
             sys.taskInit(setup_gps, "setup_gps")   
         end

+ 4 - 4
module/Air8000/project/整机开发板出厂工程/user/airsta.lua

@@ -142,9 +142,9 @@ function airgps.run()       -- TTS 播放主程序
 
         lcd.showImage(20,360,"/luadb/back.jpg")
         if gps_is_run then
-            lcd.showImage(130,370,"/luadb/stop_gps.jpg")
+            lcd.showImage(130,370,"/luadb/stop.jpg")
         else
-            lcd.showImage(130,370,"/luadb/start_gps.jpg")
+            lcd.showImage(130,370,"/luadb/start.jpg")
         end
         
 
@@ -157,7 +157,7 @@ function airgps.run()       -- TTS 播放主程序
     end
 end
 
-local function stop_gps()
+local function stop()
     gnss.stop()
 end
 
@@ -166,7 +166,7 @@ function airgps.tp_handal(x,y,event)       -- 判断是否需要停止播放
         run_state = 0
     elseif x > 130 and  x < 241 and y > 370  and  y < 417 then
         if  gps_is_run then
-            sys.taskInit(stop_gps, "stop_gps")   
+            sys.taskInit(stop, "stop")   
         else
             sys.taskInit(setup_gps, "setup_gps")   
         end