wan.lua 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. sys = require("sys")
  2. sysplus = require("sysplus")
  3. sys.taskInit(function ()
  4. log.info("ch390", "打开LDO供电")
  5. gpio.setup(140, 1, gpio.PULLUP) --打开ch390供电
  6. sys.wait(6000)
  7. local result = spi.setup(
  8. 1,--spi id
  9. nil,
  10. 0,--CPHA
  11. 0,--CPOL
  12. 8,--数据宽度
  13. 25600000--,--频率
  14. -- spi.MSB,--高低位顺序 可选,默认高位在前
  15. -- spi.master,--主模式 可选,默认主
  16. -- spi.full--全双工 可选,默认全双工
  17. )
  18. log.info("main", "open",result)
  19. if result ~= 0 then--返回值为0,表示打开成功
  20. log.info("main", "spi open error",result)
  21. return
  22. end
  23. netdrv.setup(socket.LWIP_ETH, netdrv.CH390, {spi=1,cs=12})
  24. netdrv.dhcp(socket.LWIP_ETH, true)
  25. end)
  26. local LEDA = gpio.setup(146, 0, gpio.PULLUP)
  27. sys.taskInit(function()
  28. -- 等以太网就绪
  29. while 1 do
  30. local result, ip, adapter = sys.waitUntil("IP_READY", 3000)
  31. log.info("ready?", result, ip, adapter)
  32. if adapter and adapter == socket.LWIP_ETH then
  33. break
  34. end
  35. end
  36. sys.wait(200)
  37. httpsrv.start(80, function(client, method, uri, headers, body)
  38. -- method 是字符串, 例如 GET POST PUT DELETE
  39. -- uri 也是字符串 例如 / /api/abc
  40. -- headers table类型
  41. -- body 字符串
  42. log.info("httpsrv", method, uri, json.encode(headers), body)
  43. -- meminfo()
  44. if uri == "/led/1" then
  45. LEDA(1)
  46. return 200, {}, "ok"
  47. elseif uri == "/led/0" then
  48. LEDA(0)
  49. return 200, {}, "ok"
  50. end
  51. return 404, {}, "Not Found" .. uri
  52. -- 返回值的约定 code, headers, body
  53. -- 若没有返回值, 则默认 404, {} ,""
  54. end, socket.LWIP_ETH)
  55. iperf.server(socket.LWIP_ETH)
  56. while 1 do
  57. sys.wait(6000)
  58. local code, headers, body = http.request("GET", "http://httpbin.air32.cn/bytes/4096", nil, nil, {adapter=socket.LWIP_ETH}).wait()
  59. log.info("http", code, headers, 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()之后后面不要加任何语句!!!!!