| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- --- testSocket
- -- @module asyncSocket
- -- @author AIRM2M
- -- @license MIT
- -- @copyright openLuat.com
- -- @release 2018.10.27
- require "socket"
- module(..., package.seeall)
- local date = {
- mode = 1, -- 1表示客户端;2表示服务器;默认为1
- intPin = pio.P0_22, -- 以太网芯片中断通知引脚
- rstPin = pio.P0_21, -- 复位以太网芯片引脚
- powerFunc=function ( state )
- if state then
- local setGpioFnc_TX = pins.setup(pio.P0_7, 0)
- pmd.ldoset(15, pmd.LDO_VMMC)
- else
- pmd.ldoset(0, pmd.LDO_VMMC)
- local setGpioFnc_TX = pins.setup(pio.P0_7, 1)
- end
- end,
- spi = {spi.SPI_1, 0, 0, 8, 800000} -- SPI通道参数,id,cpha,cpol,dataBits,clock,默认spi.SPI_1,0,0,8,800000
- }
- -- 此处的IP和端口请填上你自己的socket服务器和端口
- local ip, port, c = "112.125.89.8", "37743"
- -- 异步接口演示代码
- local asyncClient
- sys.taskInit(function()
- sys.wait(3000)
- link.openNetwork(link.CH395, date)
- while true do
- while not socket.isReady() do sys.wait(1000) end
- asyncClient = socket.tcp()
- while not asyncClient:connect(ip, port) do sys.wait(2000) end
- while asyncClient:asyncSelect() do end
- asyncClient:close()
- end
- end)
- -- 测试代码,用于发送消息给socket
- sys.taskInit(function()
- while not socket.isReady() do sys.wait(2000) end
- sys.wait(10000)
- -- 这是演示用异步接口发送数据
- for i = 1, 10 do
- asyncClient:asyncSend(string.rep("0123456789", 1024))
- sys.wait(500)
- end
- end)
- -- 测试代码,用于从socket接收消息
- sys.taskInit(function()
- local cnt = 0
- while not socket.isReady() do sys.wait(2000) end
- sys.wait(10000)
- -- 这是演示用异步接口直接读取服务器数据
- while true do
- local data = asyncClient:asyncRecv()
- cnt = cnt + #data
- log.info("这是服务器下发数据:", cnt, data:sub(1, 30))
- sys.wait(1000)
- end
- end)
- -- sys.timerLoopStart(function()
- -- log.info("打印占用的内存:", _G.collectgarbage("count"))-- 打印占用的RAM
- -- log.info("打印可用的空间", rtos.get_fs_free_size())-- 打印剩余FALSH,单位Byte
- -- end, 1000)
|