airap.lua 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. local airap = {}
  2. dnsproxy = require("dnsproxy")
  3. dhcpsrv = require("dhcpsrv")
  4. httpplus = require("httpplus")
  5. local run_state = false
  6. local ap_state = false
  7. local wifi_net_state = "未打开"
  8. local ssid = "uiot"
  9. local password = "12345678"
  10. local number = 0
  11. local event = ""
  12. local function start_ap()
  13. wifi_net_state = "已打开,创建路由中"
  14. wlan.init()
  15. log.info("start_ap")
  16. ssid = ssid .. wlan.getMac()
  17. wlan.createAP(ssid, password)
  18. netdrv.ipv4(socket.LWIP_AP, "192.168.4.1", "255.255.255.0", "0.0.0.0")
  19. sys.wait(5000)
  20. dnsproxy.setup(socket.LWIP_AP, socket.LWIP_GP)
  21. dhcpsrv.create({adapter=socket.LWIP_AP})
  22. while 1 do
  23. if netdrv.ready(socket.LWIP_GP) then
  24. netdrv.napt(socket.LWIP_GP)
  25. wifi_net_state = "已打开,热点可用"
  26. log.info("start_ap ok")
  27. break
  28. end
  29. sys.wait(500)
  30. end
  31. end
  32. local function stop_ap()
  33. wlan.stopAP()
  34. end
  35. sys.subscribe("WLAN_AP_INC", function(evt, data)
  36. event = evt.. "," ..data
  37. if evt == "CONNECTED" then
  38. number = number + 1
  39. elseif evt == "DISCONNECTED" then
  40. number = number - 1
  41. end
  42. log.info("收到AP事件", evt, data and data:toHex())
  43. end)
  44. sys.subscribe("PING_RESULT", function(id, time, dst)
  45. log.info("ping", id, time, dst);
  46. event = "ping" .. id .. time .. dst
  47. end)
  48. function airap.run()
  49. log.info("airap.run")
  50. lcd.setFont(lcd.font_opposansm12_chinese) -- 具体取值可参考api文档的常量表
  51. run_state = true
  52. while true do
  53. sys.wait(10)
  54. airlink.statistics()
  55. lcd.clear(_G.bkcolor)
  56. lcd.drawStr(0,80,"WIFI AP状态:"..wifi_net_state )
  57. if ap_state then
  58. lcd.drawStr(0,120,"WIFI ssid:" .. ssid )
  59. lcd.drawStr(0,140,"WIFI password:" .. password )
  60. lcd.drawStr(0,160,"WIFI MAC:" .. wlan.getMac() )
  61. lcd.drawStr(0,180,"链接WIFI 数量:" .. number)
  62. lcd.drawStr(0,200, event)
  63. end
  64. lcd.showImage(20,360,"/luadb/back.jpg")
  65. if gps_is_run then
  66. lcd.showImage(130,370,"/luadb/stop_gps.jpg")
  67. else
  68. lcd.showImage(130,370,"/luadb/start_gps.jpg")
  69. end
  70. lcd.showImage(0,448,"/luadb/Lbottom.jpg")
  71. lcd.flush()
  72. if not run_state then -- 等待结束
  73. return true
  74. end
  75. end
  76. end
  77. local function start_ap_task()
  78. ap_state = true
  79. start_ap()
  80. end
  81. local function stop_ap_task()
  82. stop_ap()
  83. ap_state = false
  84. end
  85. function airap.start_ap()
  86. start_ap()
  87. end
  88. function airap.tp_handal(x,y,event) -- 判断是否需要停止播放
  89. if x > 20 and x < 100 and y > 360 and y < 440 then
  90. run_state = false
  91. elseif x > 130 and x < 230 and y > 370 and y < 417 then
  92. if ap_state then
  93. sysplus.taskInitEx(stop_ap_task, "stop_ap_task")
  94. else
  95. sysplus.taskInitEx(start_ap_task , "start_ap_task")
  96. end
  97. end
  98. end
  99. return airap