functionTest.lua 3.1 KB

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