現在看一下官方給的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