main.lua 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "airlink_spi_slave"
  3. VERSION = "1.0.0"
  4. -- sys库是标配
  5. _G.sys = require("sys")
  6. --[[特别注意, 使用http库需要下列语句]]
  7. _G.sysplus = require("sysplus")
  8. dnsproxy = require ("dnsproxy")
  9. local rtos_bsp = rtos.bsp()
  10. local mode = "slave"
  11. -- 订阅airlink的SDATA事件,打印收到的信息。
  12. local function airlink_sdata(data)
  13. -- 打印收到的信息。
  14. log.info("收到AIRLINK_SDATA!!", data)
  15. end
  16. local function airlink_sdata_MOBILE()
  17. sys.waitUntil("IP_READY")
  18. -- 设置网络时间同步。
  19. socket.sntp()
  20. while 1 do
  21. -- rtos.bsp():设备硬件bsp型号;os.date():本地时间。
  22. local data = rtos_bsp .. " " .. os.date()
  23. log.info("发送数据给对端设备", data, "当前airlink状态", airlink.ready())
  24. airlink.sdata(data)
  25. sys.wait(200)
  26. end
  27. end
  28. -- 订阅airlink的SDATA事件,打印收到的信息。
  29. sys.subscribe("AIRLINK_SDATA", airlink_sdata)
  30. sys.subscribe("IP_READY", function(id, ip)
  31. log.info("收到IP_READY!!", id, ip)
  32. end)
  33. local function spi_slave_task()
  34. local suc_request_num, fail_request_num = 0, 0
  35. sys.wait(100)
  36. -- 初始化airlink
  37. airlink.init()
  38. -- 注册网卡
  39. netdrv.setup(socket.LWIP_GP_GW, netdrv.WHALE)
  40. -- 启动airlink从机模式
  41. airlink.start(0)
  42. -- 配置网关ip
  43. -- netdrv.ipv4(socket.LWIP_USER0, "192.168.111.1", "255.255.255.0", "192.168.111.2")
  44. netdrv.ipv4(socket.LWIP_GP_GW, "192.168.111.2", "255.255.255.0", "192.168.111.1")
  45. sys.wait(100)
  46. sys.waitUntil("IP_READY", 10000)
  47. netdrv.napt(socket.LWIP_GP)
  48. -- 设置DNS代理。
  49. dnsproxy.setup(socket.LWIP_GP_GW, socket.LWIP_GP)
  50. while 1 do
  51. sys.wait(1000)
  52. -- log.info("ticks", mcu.ticks(), hmeta.chip(), hmeta.model(), hmeta.hwver())
  53. -- airlink.statistics()
  54. -- log.info("执行http请求")
  55. -- local code, headers, body = http.request("GET", "http://httpbin.air32.cn/bytes/2048", nil, nil, {adapter=socket.LWIP_GP,timeout=3000}).wait()
  56. -- local code, headers, body = http.request("GET", "http://httpbin.air32.cn/bytes/2048", nil, nil, {adapter=socket.LWIP_USER0,timeout=3000}).wait()
  57. -- log.info("http执行结果", code, code, headers, body)
  58. -- if code == 200 then
  59. -- suc_request_num = suc_request_num + 1
  60. -- else
  61. -- fail_request_num = fail_request_num + 1
  62. -- end
  63. -- log.info("当前成功请求次数", suc_request_num, "失败请求次数", fail_request_num)
  64. end
  65. end
  66. local function spi_master_task()
  67. sys.wait(100)
  68. -- 初始化airlink
  69. airlink.init()
  70. log.info("创建桥接网络设备")
  71. netdrv.setup(socket.LWIP_GP_GW, netdrv.WHALE)
  72. -- 启动底层线程, 主机模式
  73. airlink.start(1)
  74. -- netdrv.ipv4(socket.LWIP_USER0, "192.168.111.2", "255.255.255.0", "192.168.111.1")
  75. netdrv.ipv4(socket.LWIP_GP_GW, "192.168.111.1", "255.255.255.0", "192.168.111.2")
  76. -- sys.wait(100)
  77. -- sys.waitUntil("IP_READY", 10000)
  78. -- netdrv.napt(socket.LWIP_GP)
  79. -- -- 设置DNS代理。
  80. -- dnsproxy.setup(socket.LWIP_USER0, socket.LWIP_GP)
  81. -- airlink.test(1000)
  82. while 1 do
  83. sys.wait(1000)
  84. log.info("airlink", "从机固件版本号", airlink.sver())
  85. -- log.info("ticks", mcu.ticks(), hmeta.chip(), hmeta.model(), hmeta.hwver())
  86. -- airlink.statistics()
  87. log.info("执行http请求")
  88. local code, headers, body = http.request("GET", "https://httpbin.air32.cn/bytes/2048", nil, nil, {adapter=socket.LWIP_GP_GW,timeout=3000}).wait()
  89. -- log.info("http执行结果", code, code, headers, body)
  90. end
  91. end
  92. sys.taskInit(function()
  93. sys.wait(300)
  94. log.info("main", rtos_bsp)
  95. -- netdrv.debug(0, true)
  96. -- 测试使用Air780EHM模块作为从机演示,如果使用其他模块测试,修改下面的代码。
  97. if string.find(rtos_bsp, "780EHM") then
  98. mode = "slave"
  99. else
  100. mode = "master"
  101. end
  102. if mode == "slave" then
  103. spi_slave_task()
  104. elseif mode == "master" then
  105. spi_master_task()
  106. else
  107. log.info("airlink_spi", "未知的通讯模式:", mode)
  108. end
  109. end)
  110. -- sys.taskInit(airlink_sdata_MOBILE)
  111. -- 用户代码已结束---------------------------------------------
  112. -- 结尾总是这一句
  113. sys.run()
  114. -- sys.run()之后后面不要加任何语句!!!!!