main.lua 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "airlink"
  3. VERSION = "1.0.4"
  4. -- Air724UG要用SPI1, CS选GPIO10, RDY选GPIO18
  5. airlink.config(airlink.CONF_SPI_ID, 1) -- SPI1
  6. airlink.config(airlink.CONF_SPI_CS, 10) -- GPIO10
  7. airlink.config(airlink.CONF_SPI_RDY, 18) -- GPIO18
  8. airlink.config(airlink.CONF_SPI_SPEED, 20*1000000) -- 20MHz速度
  9. function test_ap()
  10. log.info("执行AP创建操作")
  11. wlan.createAP("uiot5678", "12345678")
  12. netdrv.ipv4(socket.LWIP_AP, "192.168.4.1", "255.255.255.0", "0.0.0.0")
  13. sys.wait(5000)
  14. -- netdrv.ipv4(socket.LWIP_AP, "192.168.4.1", "255.255.255.0", "0.0.0.0")
  15. -- log.info("创建dns代理", netdrv.ipv4(socket.LWIP_AP))
  16. dnsproxy.setup(socket.LWIP_AP, socket.LWIP_GP)
  17. -- log.info('创建DHCP服务器', netdrv.ipv4(socket.LWIP_AP))
  18. dhcpsrv.create({adapter=socket.LWIP_AP})
  19. while 1 do
  20. if netdrv.ready(socket.LWIP_GP) then
  21. netdrv.napt(socket.LWIP_GP)
  22. break
  23. end
  24. sys.wait(1000)
  25. end
  26. end
  27. -- wifi的STA相关事件
  28. sys.subscribe("WLAN_STA_INC", function(evt, data)
  29. -- evt 可能的值有: "CONNECTED", "DISCONNECTED"
  30. -- 当evt=CONNECTED, data是连接的AP的ssid, 字符串类型
  31. -- 当evt=DISCONNECTED, data断开的原因, 整数类型
  32. log.info("收到STA事件", evt, data)
  33. end)
  34. -- wifi的AP相关事件
  35. sys.subscribe("WLAN_AP_INC", function(evt, data)
  36. -- evt 可能的值有: "CONNECTED", "DISCONNECTED"
  37. -- 当evt=CONNECTED, data是连接的AP的新STA的MAC地址
  38. -- 当evt=DISCONNECTED, data是断开与AP连接的STA的MAC地址
  39. log.info("收到AP事件", evt, data and data:toHex())
  40. end)
  41. function test_sta()
  42. log.info("执行STA连接操作")
  43. -- netdrv.debug(0, true)
  44. wlan.connect("luatos1234", "12341234")
  45. -- airlink.debug(1)
  46. -- netdrv.dhcp(socket.LWIP_STA, true)
  47. while 1 do
  48. if wlan.ready() then
  49. break
  50. end
  51. sys.wait(100)
  52. end
  53. -- sys.wait(8000)
  54. -- iperf.server(socket.LWIP_STA)
  55. -- iperf.client(socket.LWIP_STA, "47.94.236.172")
  56. -- sys.wait(5000)
  57. while 1 do
  58. log.info("wlan", "info", json.encode(wlan.getInfo()))
  59. -- log.info("MAC地址", netdrv.mac(socket.LWIP_STA))
  60. -- log.info("IP地址", netdrv.ipv4(socket.LWIP_STA))
  61. -- log.info("ready?", netdrv.ready(socket.LWIP_STA))
  62. -- sys.wait(1000)
  63. -- log.info("执行http请求")
  64. -- local code = http.request("GET", "http://192.168.1.15:8000/README.md", nil, nil, {adapter=socket.LWIP_STA,timeout=3000}).wait()
  65. local code, headers, body = http.request("GET", "https://httpbin.air32.cn/bytes/2048", nil, nil, {adapter=socket.LWIP_STA,timeout=5000,debug=false}).wait()
  66. -- local code, headers, body = http.request("GET", "https://httpbin.air32.cn/bytes/2048", nil, nil).wait()
  67. log.info("http执行结果", code, headers, body and #body)
  68. -- socket.sntp(nil, socket.LWIP_STA)
  69. -- sys.wait(12000)
  70. -- socket.sntp(nil)
  71. -- sys.wait(2000)
  72. -- log.info("执行ping操作")
  73. -- icmp.ping(socket.LWIP_STA, "183.2.172.177")
  74. -- sys.wait(2000)
  75. local re_ip = httpdns.ali("air32.cn", {adapter=socket.LWIP_STA, timeout=3000})
  76. log.info("httpdns", re_ip)
  77. sys.wait(3000)
  78. -- pm.request(pm.LIGHT, 1)
  79. end
  80. end
  81. sys.subscribe("PING_RESULT", function(id, time, dst)
  82. log.info("ping", id, time, dst);
  83. end)
  84. function test_scan()
  85. while 1 do
  86. log.info("执行wifi扫描")
  87. wlan.scan()
  88. sys.wait(30 * 1000)
  89. end
  90. end
  91. sys.subscribe("WLAN_SCAN_DONE", function ()
  92. local results = wlan.scanResult()
  93. log.info("scan", "results", #results)
  94. for k,v in pairs(results) do
  95. log.info("scan", v["ssid"], v["rssi"], (v["bssid"]:toHex()))
  96. end
  97. end)
  98. -- 每隔6秒打印一次airlink统计数据, 调试用
  99. -- sys.taskInit(function()
  100. -- while 1 do
  101. -- sys.wait(6000)
  102. -- airlink.statistics()
  103. -- end
  104. -- end)
  105. sys.taskInit(function()
  106. log.info("新的Air7000脚本...")
  107. -- log.info("5秒后开始测试")
  108. -- sys.wait(5000)
  109. airlink.init()
  110. airlink.start(1)
  111. sys.wait(200) -- 稍微缓一下, Air8000S的启动大概需要300ms
  112. -- 等待初始化完成
  113. while not airlink.ready() do
  114. log.info("等待Airlink初始化完成")
  115. sys.wait(1000)
  116. end
  117. -- 启动AP测试
  118. netdrv.setup(socket.LWIP_STA, netdrv.WHALE)
  119. netdrv.setup(socket.LWIP_AP, netdrv.WHALE)
  120. wlan.init()
  121. -- sys.wait(5000)
  122. -- sys.wait(300)
  123. -- test_ap()
  124. -- 连接STA测试
  125. test_sta()
  126. -- wifi扫描测试
  127. -- sys.wait(2000)
  128. -- test_scan()
  129. end)
  130. -- 用户代码已结束---------------------------------------------
  131. -- 结尾总是这一句
  132. sys.run()
  133. -- sys.run()之后后面不要加任何语句!!!!!