main.lua 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "airlink_uart_http"
  3. VERSION = "1.0.1"
  4. dnsproxy = require("dnsproxy")
  5. -----------------------------------
  6. -- 配置区域
  7. -----------------------------------
  8. is_gw = false -- 是否是网关模式, 要插卡, 要能联网
  9. uart_id = 1 -- 按实际接到UART的ID来设置, 1或2
  10. airlink.config(airlink.CONF_UART_ID, uart_id) -- 设置airlink使用的UART ID
  11. uart.setup(uart_id, 115200) -- 初始化UART1, 波特率115200, 8N1
  12. -- 注意, uart波特率的设置值,取决于两个设备的都支持的最高波特率, 例如2M也是可以的, 但要确保两个设备都支持2M波特率
  13. -------------------------------------
  14. sys.taskInit(function()
  15. sys.wait(500)
  16. log.info("airlink", "Starting airlink with UART task")
  17. -- 初始化airlink
  18. airlink.init()
  19. -- 注册网卡
  20. netdrv.setup(socket.LWIP_USER0, netdrv.WHALE)
  21. -- 启动airlink uart任务
  22. airlink.start(2)
  23. -- 网关模式下, ip设置为.1, 对端设置为.2
  24. if is_gw then
  25. netdrv.ipv4(socket.LWIP_USER0, "192.168.111.1", "255.255.255.0", "192.168.111.2")
  26. else
  27. netdrv.ipv4(socket.LWIP_USER0, "192.168.111.2", "255.255.255.0", "192.168.111.1")
  28. end
  29. -- netdrv.debug(0, true)
  30. end)
  31. sys.taskInit(function()
  32. sys.wait(1000)
  33. while 1 do
  34. -- 发送给对端设备
  35. local data = rtos.bsp() .. " " .. os.date() .. " " .. (mobile and mobile.imei() or "")
  36. log.info("client 发送数据给sever设备", data, "当前airlink状态", airlink.ready())
  37. airlink.sdata(data)
  38. -- airlink.test(1000) -- 要测试高速连续发送的情况
  39. sys.wait(1000)
  40. end
  41. end)
  42. sys.taskInit(function()
  43. -- sys.waitUntil("IP_READY")
  44. sys.wait(3000)
  45. if is_gw then
  46. log.info("airlink", "Gateway mode")
  47. -- while netdrv.ready(socket.LWIP_USER0) == false do
  48. while netdrv.ready(socket.LWIP_GP) == false do
  49. sys.wait(100)
  50. end
  51. netdrv.napt(socket.LWIP_GP)
  52. return
  53. else
  54. log.info("airlink", "Client mode")
  55. end
  56. while 1 do
  57. sys.wait(500)
  58. local code, headers, body = http.request("GET", "https://httpbin.air32.cn/bytes/2048", nil, nil, {adapter=socket.LWIP_USER0,timeout=3000}).wait()
  59. log.info("http", code, body and #body)
  60. -- log.info("lua", rtos.meminfo())
  61. -- log.info("sys", rtos.meminfo("sys"))
  62. end
  63. end)
  64. -- 用户代码已结束---------------------------------------------
  65. -- 结尾总是这一句
  66. sys.run()
  67. -- sys.run()之后后面不要加任何语句!!!!!