functionTest.lua 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. local server_ip = "112.125.89.8" --换成自己的,demo用UDP服务器,如果用TCP服务器,目前需要在用极致功耗模式时先断开服务器
  2. local server_port = 34352 --换成自己的
  3. local period = 1800000 --默认30分钟变化一次模式
  4. local reason, slp_state = pm.lastReson()
  5. log.info("wakeup state", pm.lastReson())
  6. if reason > 0 then
  7. log.info("已经从深度休眠唤醒")
  8. pm.power(pm.WORK_MODE,3)
  9. else
  10. sys.taskInit(function()
  11. log.info("High Performance")
  12. pm.power(pm.WORK_MODE,1)
  13. sys.wait(period)
  14. log.info("Balanced")
  15. pm.power(pm.WORK_MODE,2)
  16. sys.wait(period)
  17. log.info("no low power")
  18. pm.power(pm.WORK_MODE,0)
  19. sys.wait(period)
  20. log.info("power save")
  21. pm.power(pm.WORK_MODE,3)
  22. pm.dtimerStart(3, period)
  23. gpio.setup(23,nil)
  24. gpio.close(35)
  25. gpio.setup(20, function()
  26. log.info("gpio")
  27. end, gpio.PULLUP, gpio.FALLING)
  28. sys.wait(period)
  29. end)
  30. end
  31. local libnet = require "libnet"
  32. local d1Name = "D1_TASK"
  33. local function netCB(msg)
  34. log.info("未处理消息", msg[1], msg[2], msg[3], msg[4])
  35. end
  36. local function testTask(ip, port)
  37. d1Online = false
  38. local tx_buff = zbuff.create(1024)
  39. local rx_buff = zbuff.create(1024)
  40. local netc
  41. local result, param, is_err
  42. netc = socket.create(nil, d1Name)
  43. socket.debug(netc, false)
  44. socket.config(netc, nil, true, nil) -- demo用UDP服务器,如果用TCP服务器,目前需要在用极致功耗模式时先断开服务器
  45. -- socket.config(netc, nil, true)
  46. while true do
  47. log.info(rtos.meminfo("sys"))
  48. result = libnet.waitLink(d1Name, 0, netc)
  49. result = libnet.connect(d1Name, 15000, netc, ip, port)
  50. -- result = libnet.connect(d1Name, 5000, netc, "112.125.89.8",34607)
  51. d1Online = result
  52. if result then
  53. log.info("服务器连上了")
  54. libnet.tx(d1Name, 0, netc, "helloworld")
  55. if reason > 0 then
  56. pm.dtimerStart(3, period)
  57. gpio.setup(23,nil)
  58. gpio.close(35)
  59. gpio.setup(20, function()
  60. log.info("gpio")
  61. end, gpio.PULLUP, gpio.FALLING)
  62. sys.wait(period)
  63. end
  64. end
  65. while result do
  66. succ, param, _, _ = socket.rx(netc, rx_buff)
  67. if not succ then
  68. log.info("服务器断开了", succ, param, ip, port)
  69. break
  70. end
  71. if rx_buff:used() > 0 then
  72. log.info("收到服务器数据,长度", rx_buff:used())
  73. uart.tx(uart_id, rx_buff)
  74. rx_buff:del()
  75. end
  76. if tx_buff:len() > 1024 then
  77. tx_buff:resize(1024)
  78. end
  79. if rx_buff:len() > 1024 then
  80. rx_buff:resize(1024)
  81. end
  82. log.info(rtos.meminfo("sys"))
  83. -- 阻塞等待新的消息到来,比如服务器下发,串口接收到数据
  84. result, param = libnet.wait(d1Name, 300000, netc)
  85. if not result then
  86. log.info("服务器断开了", result, param)
  87. break
  88. end
  89. end
  90. d1Online = false
  91. libnet.close(d1Name, 5000, netc)
  92. log.info(rtos.meminfo("sys"))
  93. sys.wait(1000)
  94. end
  95. end
  96. sysplus.taskInitEx(testTask, d1Name, netCB, server_ip, server_port)