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

Merge branch 'master' of gitee.com:openLuat/LuatOS

Wendal Chen 9 месяцев назад
Родитель
Сommit
b2e5ce3a72

+ 3 - 81
module/Air8000/demo/wlan/AP/main.lua

@@ -13,10 +13,7 @@ function test_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)
-    -- 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
@@ -27,99 +24,24 @@ 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脚本...")
-
-    -- sys.wait(200) -- 稍微缓一下, Air8000S的启动大概需要300ms
-    -- 启动AP测试
-    -- netdrv.setup(socket.LWIP_STA, netdrv.WHALE)
-    -- netdrv.setup(socket.LWIP_AP, netdrv.WHALE)
+    log.info("新的Air8000脚本1...")
+ 
     wlan.init()
-    -- sys.wait(5000)
-    
-    -- sys.wait(300)
-    test_ap()
-
-    -- 连接STA测试
-    -- test_sta()
 
-    -- wifi扫描测试
-    -- test_scan()
+    test_ap()
 end)
 
 

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


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

@@ -1,144 +1,73 @@
-local airgps = {}
+local airap = {}
 
-local gps_state = "未定位"
-local gps_is_run  = false
-local lat = ""
-local lng = ""
-local total_sats = 0
-local total_sats_use = 0
-local speed = 0
-local degrees = ""
-local snr = ""
-local snr1 = ""
-local location = ""
-local move = "静止"
-local time = ""
+dnsproxy = require("dnsproxy")
+dhcpsrv = require("dhcpsrv")
+httpplus = require("httpplus")
+local run_state = false
+local ap_state = false
+local wifi_net_state = "未打开"
+local ssid = "uiot"
+local password = "12345678"
+local number = 0
+local event = ""
 
-local function setup_gps()
-    gps_is_run = true
-    gps_state = "定位中"
-    local gnss = require("agps_icoe")
-    log.debug("提醒", "室内无GNSS信号,定位不会成功, 要到空旷的室外,起码要看得到天空")
-    pm.power(pm.GPS, true)
-    gnss.setup({
-        uart_id=2,
-        uart_forward = uart.VUART_0, -- 转发到虚拟串口,方便对接GnssToolKit3
-        debug=true,
-        sys=1
-    })
-    gnss.start() --初始化gnss
-    gnss.agps() --使用agps辅助定位
-    --循环打印解析后的数据,可以根据需要打开对应注释
 
-end
-local function gps_state_get()
-    local gsv =  libgnss.getGsv()
-    -- log.info("nmea", "gsv", json.encode(libgnss.getGsv()))
-    if gsv and  gsv.total_sats then
-        total_sats = gsv.total_sats
-    end
-    local tmp = {}
-    snr = ""
-    snr1 = ""
-    if gsv.total_sats > 0 then
-        for i = 1, gsv.total_sats do
-            if gsv.sats[i].snr and gsv.sats[i].snr ~= 0 then
-                table.insert(tmp, gsv.sats[i].snr)
-            end
-        end
-        total_sats_use = #tmp
-        table.sort(tmp, function(a, b)
-            return a > b
-        end)
-        if #tmp > 16 then
-            for i = 1 , 16 do
-                snr = snr .. tmp[i] .. "," 
-            end
-            
-            for i = 17 , #tmp do
-                snr1 = snr1 .. tmp[i] .. "," 
-            end
-        else
-            for i = 1 , #tmp do
-                snr = snr .. tmp[i] .. "," 
-            end            
+local function start_ap()
+    wifi_net_state = "已打开,创建路由中"
+    wlan.init()
+    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)
+    dnsproxy.setup(socket.LWIP_AP, socket.LWIP_GP)
+    dhcpsrv.create({adapter=socket.LWIP_AP})
+    while 1 do
+        if netdrv.ready(socket.LWIP_GP) then
+            netdrv.napt(socket.LWIP_GP)
+            wifi_net_state = "已打开,热点可用"
+            log.info("start_ap ok")
+            break
         end
-        -- log.info("gps_state_get",#tmp,snr,snr1 )
-    end
-
-
-    local vtg =  libgnss.getVtg()
-    if vtg and  gsv.speed_kph then
-        speed = gsv.speed_kph
-    end
-    if vtg and  gsv.true_track_degrees then
-        degrees = gsv.true_track_degrees
-    end
-    if vtg and  gsv.speed_kph then
-        speed = gsv.speed_kph
-    end
-    if gps_state == "定位成功" then
-        rmc = libgnss.getRmc(2)
-        log.info("nmea", "rmc", json.encode(libgnss.getRmc(2)))
-        lat = rmc.lat
-        lng = rmc.lng
-        variation = rmc.variation
-        
-        time = rmc.year .. "年" .. rmc.month .. "月" .. rmc.day .. "日" .. (rmc.hour + 8) .. "时" .. rmc.min  .. "分"  ..   rmc.sec .. "秒" 
-        -- speed = libgnss.getIntLocation(2)
+        sys.wait(500)
     end
 end
 
+local function stop_ap()
+    wlan.stopAP()
+end
 
--- 订阅GNSS状态编码
-sys.subscribe("GNSS_STATE", function(event, ticks)
-    -- event取值有
-    -- FIXED 定位成功
-    -- LOSE  定位丢失
-    -- ticks是事件发生的时间,一般可以忽略
-    log.info("gnss", "state", event, ticks)
-    if event == "FIXED" then
-        local locStr = libgnss.locStr()
-        log.info("gnss", "locStr", locStr)
-        gps_state = "定位成功"
-        -- if locStr then
-        --     -- 存入文件,方便下次AGNSS快速定位
-        --     io.writeFile("/gnssloc", locStr)
-        -- end
-    elseif event == "LOSE" then
-        gps_state = "定位失败"
-    elseif event == "AGPS_DOWNLOADED" then
-        gps_state = "定位中:辅助定位数据下载完成"
-    elseif event == "AGPS_LBS_LOC_ERR" then
-        gps_state = "定位中:辅助定位坐标位置获取失败"
-    elseif event == "AGPS_WIRTE_OK" then
-        gps_state = "定位中:辅助定位写入完成,正在搜星"
+sys.subscribe("WLAN_AP_INC", function(evt, data)
+    event = evt.. "," ..data
+    if evt == "CONNECTED" then
+        number = number + 1
+    elseif evt == "DISCONNECTED" then
+        number = number - 1
     end
+    log.info("收到AP事件", evt, data and data:toHex())
+end)
+sys.subscribe("PING_RESULT", function(id, time, dst)
+    log.info("ping", id, time, dst);
+    event = "ping" .. id .. time .. dst
 end)
 
-function airgps.run()       -- TTS 播放主程序
-    log.info("airgps.run")
-    run_state = 1
-    
+
+function airap.run()       
+    log.info("airap.run")
     lcd.setFont(lcd.font_opposansm12_chinese) -- 具体取值可参考api文档的常量表
+    run_state = true
     while true do
+        sys.wait(10)
+        airlink.statistics()
         lcd.clear(_G.bkcolor) 
-        sys.wait(1000)
-        -- log.info("scell", json.encode(mobile.scell()))
-        gps_state_get()
-        -- log.info("airgps.run 11 ")
-        
-        lcd.drawStr(0,80,"GPS 状态:" .. gps_state)
-        lcd.drawStr(0,110,"经度:" .. lng  .. " 纬度:".. lat .. " (WGS-84坐标系)" )
-        lcd.drawStr(0,140,"可见卫星数:" .. total_sats .. " ,可用卫星数:" .. total_sats_use)
-        lcd.drawStr(0,160,"信噪比:" .. snr)      
-        lcd.drawStr(0,180,snr1)       
-        lcd.drawStr(0,200,"速度:" .. speed .. "千米/小时")
-        lcd.drawStr(0,230,"方向:" .. degrees)
-        lcd.drawStr(0,260,"位置:" .. location)
-        lcd.drawStr(0,290,"高精度时间:" .. time)
-        lcd.drawStr(0,320,"运动状态:" .. move)
-
+        lcd.drawStr(0,80,"WIFI AP状态:"..wifi_net_state )
+        if ap_state then
+            lcd.drawStr(0,120,"WIFI ssid:" .. ssid )
+            lcd.drawStr(0,140,"WIFI password:" .. password )
+            lcd.drawStr(0,160,"WIFI MAC:" .. wlan.getMac() )
+            lcd.drawStr(0,180,"链接WIFI 数量:" .. number)
+            lcd.drawStr(0,200, event)
+        end
 
         lcd.showImage(20,360,"/luadb/back.jpg")
         if gps_is_run then
@@ -151,27 +80,36 @@ function airgps.run()       -- TTS 播放主程序
         lcd.showImage(0,448,"/luadb/Lbottom.jpg")
         lcd.flush()
         
-        if run_state == 0 then    -- 等待结束
+        if not  run_state  then    -- 等待结束
             return true
         end
     end
 end
 
-local function stop_gps()
-    gnss.stop()
+local function start_ap_task()
+    ap_state = true
+    start_ap()
+end
+
+
+local function stop_ap_task()
+    stop_ap()
+    ap_state = false
+end
+function airap.start_ap() 
+    start_ap()
 end
 
-function airgps.tp_handal(x,y,event)       -- 判断是否需要停止播放
+function airap.tp_handal(x,y,event)       -- 判断是否需要停止播放
     if x > 20 and  x < 100 and y > 360  and  y < 440 then
-        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")   
+        run_state = false
+    elseif x > 130 and  x < 230 and y > 370  and  y < 417 then
+        if ap_state then
+            sysplus.taskInitEx(stop_ap_task, "stop_ap_task")
         else
-            sys.taskInit(setup_gps, "setup_gps")   
+            sysplus.taskInitEx(start_ap_task , "start_ap_task")
         end
-         
     end
 end
 
-return airgps
+return airap

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

@@ -1,6 +1,6 @@
 local aircamera = {}
 
-require "gc0310"
+require "gc032a"
 local airlcd = require "airlcd"
 local httpplus = require "httpplus"
 local taskName = "SPI_CAMERA"
@@ -96,7 +96,7 @@ local function aircamera_run()
         sys.wait(100)
         gpio.setup(153, 0) -- PD拉低
         sys.wait(500)
-        camera_id = gc0310Init(cspiId, i2cId, 25500000, 1, 1)  -- 最后两个1 ,是默认按照扫码始化
+        camera_id = gc032aInit(cspiId, i2cId, 25500000, 1, 1)  -- 最后两个1 ,是默认按照扫码始化
         sys.wait(100)
         camera.start(camera_id)  -- 开始扫码
     end
@@ -119,7 +119,7 @@ function aircamera.init()
     log.info("摄像头初始化")
     gpio.setup(153, 0) -- PD拉低
     sys.wait(500)
-    camera_id = gc0310Init(cspiId, i2cId, 25500000, 0, 0)  -- 最后两个0 ,是默认按照拍照初始化
+    camera_id = gc032aInit(cspiId, i2cId, 25500000, 0, 0)  -- 最后两个0 ,是默认按照拍照初始化
 end
 
 local function aircamera_ui()
@@ -174,7 +174,7 @@ function send_file_task()
         sys.wait(100)
         gpio.setup(153, 0) -- PD拉低
         sys.wait(500)
-        camera_id = gc0310Init(cspiId, i2cId, 25500000, 0, 0)  -- 最后两个1 ,是默认按照扫码始化
+        camera_id = gc032aInit(cspiId, i2cId, 25500000, 0, 0)  -- 最后两个1 ,是默认按照扫码始化
         sys.wait(100)
         local res= camera.capture(camera_id, "/ram/testcamera.jpg", 95)
         log.info("aircamera send_file_task1 res",res)

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

@@ -122,8 +122,8 @@ function airgps.run()       -- TTS 播放主程序
     
     lcd.setFont(lcd.font_opposansm12_chinese) -- 具体取值可参考api文档的常量表
     while true do
-        lcd.clear(_G.bkcolor) 
         sys.wait(1000)
+        lcd.clear(_G.bkcolor)
         -- log.info("scell", json.encode(mobile.scell()))
         gps_state_get()
         -- log.info("airgps.run 11 ")

+ 0 - 1
module/Air8000/project/整机开发板出厂工程/user/airlcd.lua

@@ -22,7 +22,6 @@ function airLCD.lcd_init(sn)
     lcd_param = {
         port = lcd.HWID_0,                 -- 使用的spi id 号
         pin_dc = 0xff,            -- 命令选择硬件,不设置
-        pin_pwr = 9,           -- 背光控制管脚,默认打开背光,不设置
         pin_rst = 2,             -- 屏幕reset 管脚  
         direction = 0,            -- 屏幕方向
         -- direction0 = 0x00,

+ 2 - 1
module/Air8000/project/整机开发板出厂工程/user/airtts.lua

@@ -7,7 +7,7 @@ local play_string =  "支持 4G,卫星定位,WiFi,蓝牙,5秒极速联网,"
 local play_string1 =  "51个可编程IO/4个UART/4个通用ADC/1个CAN接口,"
 local play_string2 =  "支持LuatOS二次开发,源码开放例程丰富,"
 local play_string3 =  "支持485/232/充电/以太网驱动/多网融合/VoLTE通话,"
-
+local airaudio  = require "airaudio"
 local taskName = "airtts"
 local run_state = 0
 
@@ -60,6 +60,7 @@ function audio_stop()
 end
 
 local function audio_task()
+    airaudio.init()
     if fonts.list then
         log.info("fonts", "u8g2", json.encode(fonts.list("u8g2")))
     end

+ 27 - 21
module/Air8000/project/整机开发板出厂工程/user/main.lua

@@ -8,6 +8,7 @@ sys = require("sys")
 local airlcd = require "airlcd"
 local airgps = require "airgps"
 local airmusic = require "airmusic"
+local airap = require "airap"
 local airtts  = require "airtts"
 local airaudio  = require "airaudio"
 local aircamera = require "aircamera"
@@ -52,13 +53,13 @@ local sid = 0
 -- "232":       232
 
 local cur_fun = "main"
-local cur_sel = 0
+-- local cur_sel = 0
 
-local funlist = {
-"gps", "wifiap","wifista","camera", "call","bt","sms","tts",
-"record","music","tf","gsensor","pm","lan","wan",
-"multi-network","485","can","onewire","pwm","uart","232"
-}
+-- local funlist = {
+-- "gps", "wifiap","wifista","camera", "call","bt","sms","tts",
+-- "record","music","tf","gsensor","pm","lan","wan",
+-- "multi-network","485","can","onewire","pwm","uart","232"
+-- }
 
 _G.bkcolor = lcd.rgb565(99, 180, 245,false)
 
@@ -113,7 +114,9 @@ local function handal_main(x,y)
   if key == 1 then
     cur_fun  = "gps"
   elseif key == 2 then
+    cur_fun = "ap"
   elseif key == 3 then
+    cur_fun = "sta"
   elseif key == 4 then
     cur_fun  = "camera"
   elseif key == 5 then
@@ -180,6 +183,8 @@ local function  tp_handal(tp_device,tp_data)
       aircamera.tp_handal(tp_data[1].x,tp_data[1].y,tp_data[1].event)
     elseif cur_fun == "gps" then
       airgps.tp_handal(tp_data[1].x,tp_data[1].y,tp_data[1].event)
+    elseif cur_fun == "ap" then
+      airap.tp_handal(tp_data[1].x,tp_data[1].y,tp_data[1].event)
     end
     lock_push = 1
   end
@@ -288,6 +293,18 @@ local function draw_gps()
   end
 end
 
+local function draw_ap()
+  if  airap.run()   then
+    cur_fun = "main"
+  end
+end
+
+local function draw_sta()
+  if  airsta.run()   then
+    cur_fun = "main"
+  end
+end
+
 
 local function draw()
   if cur_fun == "camshow" then
@@ -310,20 +327,10 @@ local function draw()
     draw_camera()
   elseif cur_fun == "gps" then
     draw_gps()
-  elseif cur_fun == "russia" then
-    airrus.drawrus()
-  elseif cur_fun == "LAN" then
-    draw_lan()
-  elseif cur_fun == "WAN" then
-    draw_wan()
-  elseif cur_fun == "selftest" then
-    draw_selftest()
-  elseif cur_fun == "modbusTCP" then
-    draw_modbusTCP()
-  elseif cur_fun == "modbusRTU" then
-    draw_modbusRTU()
-  elseif cur_fun == "CAN" then
-    draw_CAN()
+  elseif cur_fun == "ap" then
+    draw_ap()
+  elseif cur_fun == "sta" then
+    draw_sta()
   end
   
   lcd.showImage(0,448,"/luadb/Lbottom.jpg")
@@ -346,7 +353,6 @@ function ip_ready_handle(ip, adapter)
 end
 
 local function UITask()
-    airaudio.init()
     sys.wait(1000)
     log.info("合宙 8000 startup v1")
     -- aircamera.init()