标签:循环 读取数据 pre tle sys ack get code 现在
https://www.cnblogs.com/yangfengwu/p/9968716.html
现在看一下官方给的demo
其实只要有两个就好说了
module(...,package.seeall) --[[ 函数名:print 功能 :打印接口,此文件中的所有打印都会加上test前缀 参数 :无 返回值:无 ]] local function print(...) _G.print("test",...) end --串口配置 local UART_ID = 1 --uart1 local uartReadData = ""; local uartReadDataCnt = 0; --定时器空闲中断检测(串口空闲接收数据) local UartTimerCnt = 0; local function UartTimer() if uartReadDataCnt ~= 0 then UartTimerCnt = UartTimerCnt+1; if UartTimerCnt >= 20 then UartTimerCnt=0; uartReadDataCnt = 0; uart.write(UART_ID,uartReadData); uartReadData = ""; end end end sys.timer_loop_start(UartTimer,10) --读取串口接收到的数据 local uartdata = "" local function read() uartdata = "" while true do uartdata = uart.read(UART_ID,"*l",0) if not uartdata or string.len(uartdata) == 0 then break end uartReadData = uartReadData..uartdata; uartReadDataCnt = uartReadDataCnt +1 UartTimerCnt = 0; end end --注册串口的数据接收函数,串口收到数据后,会以中断方式,调用read接口读取数据 sys.reguart(UART_ID,read) --配置并且打开串口 uart.setup(UART_ID,115200,8,uart.PAR_NONE,uart.STOP_1)
现在下载测试,就是发送给串口1什么就回什么
可以了,现在发指令控制GPIO5
指令就用
{data:switch,bit:1,status:0} 控制GPIO5输出低电平
{data:switch,bit:1,status:1} 控制GPIO5输出高电平
有可能会问,搞这么复杂的指令干嘛。。。。为了后期统一,而且现在物联网通信json格式用的很多,所以。。。。
module(...,package.seeall) --[[ 函数名:print 功能 :打印接口,此文件中的所有打印都会加上test前缀 参数 :无 返回值:无 ]] local function print(...) _G.print("test",...) end --串口配置 local UART_ID = 1 --uart1 local uartReadData = ""; local uartReadDataCnt = 0; pio.pin.setdir(pio.OUTPUT,pio.P0_5) pio.pin.setval(0,pio.P0_5) --定时器空闲中断检测(串口空闲接收数据) local UartTimerCnt = 0; local function UartTimer() if uartReadDataCnt ~= 0 then UartTimerCnt = UartTimerCnt+1; if UartTimerCnt >= 20 then--有200ms不进去中断接受数据了,就认为收完了一条数据 UartTimerCnt=0; uartReadDataCnt = 0; if uartReadData=="{data:switch,bit:1,status:0}" then pio.pin.setval(0,pio.P0_5) uart.write(UART_ID,uartReadData);--返回数据 elseif uartReadData=="{data:switch,bit:1,status:1}" then pio.pin.setval(1,pio.P0_5) uart.write(UART_ID,uartReadData);--返回数据 end uartReadData = ""; end end end sys.timer_loop_start(UartTimer,10)--10MS的循环定时器 --读取串口接收到的数据 local uartdata = "" local function read() uartdata = "" while true do uartdata = uart.read(UART_ID,"*l",0) if not uartdata or string.len(uartdata) == 0 then break end uartReadData = uartReadData..uartdata;--接收数据 uartReadDataCnt = uartReadDataCnt +1 UartTimerCnt = 0; end end --注册串口的数据接收函数,串口收到数据后,会以中断方式,调用read接口读取数据 sys.reguart(UART_ID,read) --配置并且打开串口 uart.setup(UART_ID,115200,8,uart.PAR_NONE,uart.STOP_1)
资料源码链接
链接:https://pan.baidu.com/s/1-SRfsKGQ7rZVvFmp1ObHWw 密码:p9qs
基础教程源码链接如果失效,请在淘宝介绍中下载,由于链接还是失效,请联系卖家,谢谢
https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-18540610442.6.36a74814ZSaRsu&id=569295486025
https://www.cnblogs.com/yangfengwu/p/9969179.html
标签:循环 读取数据 pre tle sys ack get code 现在
原文地址:https://www.cnblogs.com/yangfengwu/p/9968883.html