testSocket.lua 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. --- testSocket
  2. -- @module asyncSocket
  3. -- @author AIRM2M
  4. -- @license MIT
  5. -- @copyright openLuat.com
  6. -- @release 2018.10.27
  7. require "socket"
  8. module(..., package.seeall)
  9. local date = {
  10. mode = 1, -- 1表示客户端;2表示服务器;默认为1
  11. intPin = pio.P0_22, -- 以太网芯片中断通知引脚
  12. rstPin = pio.P0_21, -- 复位以太网芯片引脚
  13. powerFunc=function ( state )
  14. if state then
  15. local setGpioFnc_TX = pins.setup(pio.P0_7, 0)
  16. pmd.ldoset(15, pmd.LDO_VMMC)
  17. else
  18. pmd.ldoset(0, pmd.LDO_VMMC)
  19. local setGpioFnc_TX = pins.setup(pio.P0_7, 1)
  20. end
  21. end,
  22. spi = {spi.SPI_1, 0, 0, 8, 800000} -- SPI通道参数,id,cpha,cpol,dataBits,clock,默认spi.SPI_1,0,0,8,800000
  23. }
  24. -- 此处的IP和端口请填上你自己的socket服务器和端口
  25. local ip, port, c = "112.125.89.8", "37743"
  26. -- 异步接口演示代码
  27. local asyncClient
  28. sys.taskInit(function()
  29. sys.wait(3000)
  30. link.openNetwork(link.CH395, date)
  31. while true do
  32. while not socket.isReady() do sys.wait(1000) end
  33. asyncClient = socket.tcp()
  34. while not asyncClient:connect(ip, port) do sys.wait(2000) end
  35. while asyncClient:asyncSelect() do end
  36. asyncClient:close()
  37. end
  38. end)
  39. -- 测试代码,用于发送消息给socket
  40. sys.taskInit(function()
  41. while not socket.isReady() do sys.wait(2000) end
  42. sys.wait(10000)
  43. -- 这是演示用异步接口发送数据
  44. for i = 1, 10 do
  45. asyncClient:asyncSend(string.rep("0123456789", 1024))
  46. sys.wait(500)
  47. end
  48. end)
  49. -- 测试代码,用于从socket接收消息
  50. sys.taskInit(function()
  51. local cnt = 0
  52. while not socket.isReady() do sys.wait(2000) end
  53. sys.wait(10000)
  54. -- 这是演示用异步接口直接读取服务器数据
  55. while true do
  56. local data = asyncClient:asyncRecv()
  57. cnt = cnt + #data
  58. log.info("这是服务器下发数据:", cnt, data:sub(1, 30))
  59. sys.wait(1000)
  60. end
  61. end)
  62. -- sys.timerLoopStart(function()
  63. -- log.info("打印占用的内存:", _G.collectgarbage("count"))-- 打印占用的RAM
  64. -- log.info("打印可用的空间", rtos.get_fs_free_size())-- 打印剩余FALSH,单位Byte
  65. -- end, 1000)