| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- --- 模块功能:MCU和Air模块串口透传通信.
- -- Air模块的串口接收到1024字节的数据,或者接收数据后超时1秒钟不再收到数据,则透传给服务器
- --
- -- 服务器下发的数据,通过服务器直接透传给MCU
- -- @author openLuat
- -- @module socketLongConnectionTrasparent.mcuUart
- -- @license MIT
- -- @copyright openLuat
- -- @release 2018.03.30
- module(...,package.seeall)
- require"pm"
- local uartID = 2
- local function taskRead()
- local cacheData = ""
- while true do
- local s = uart.read(uartID,"*l")
- if s == "" then
- uart.on(uartID,"receive",function() sys.publish("UART_RECEIVE") end)
- if not sys.waitUntil("UART_RECEIVE",1000) then
- sys.publish("UART_RECV_DATA",cacheData:sub(1,1024))
- cacheData = cacheData:sub(1025,-1)
- end
- uart.on(uartID,"receive")
- else
- cacheData = cacheData..s
- if cacheData:len()>=1024 then
- sys.publish("UART_RECV_DATA",cacheData:sub(1,1024))
- cacheData = cacheData:sub(1025,-1)
- end
- end
- end
- end
- local function socketRecvData(data)
- uart.write(uartID,data)
- end
- pm.wake("mcuUart.lua")
- uart.setup(uartID,115200,8,uart.PAR_NONE,uart.STOP_1)
- sys.taskInit(taskRead)
- sys.subscribe("SOCKET_RECV_DATA",socketRecvData)
|