一、8266通讯引脚
二、通讯方式
三、驱动方式
一、8266通讯引脚
8266通讯引脚在右上方,可用通讯串口只有一个,为串口0
二、通讯方式
全双工异步通讯
三、驱动方式
由于通讯串口只有一个(串口0),所以需要我们做的事情非常少,仅需要注册串口,然后利用定时器来监听串口数据。
串口注册API:
uart.on(method, [number/end_char], [function], [run_input])
method = "data", 表示uart接收到了数据
number/end_char
- n=0,串口将接受每一个字符
- n<255,则在接收到n个字符时调用回调函数
- 有一个字符“c”,当遇到“c”或接收到最大值n=255时,将调用回调函数
函数回调函数,事件“数据”有这样一个回调:函数(数据)结束function 为回调函数,"data" 的回调函数签名为function(data) end
run_input: 0或1,0表示从uart输入的data不经过lua解释器执行,1表示输入的行会被送到lua解释器
执行。
程序:
/*
*完成时间:2019-7-17
*程序:串口通讯(新版本固件)
*描述:uart.on接口为串口监听API,函数原型 uart.on(method, [number/end_char], [function], [run_input])
* 第一个参数为定义串口接收数据,规定为 “data”(双引号不能省略)
* 第二参数如果n=0,将接收缓冲区中的每个字符
* 如果n<255,则在接收到n个字符时调用回调函数
* 如果有一个字符“c”,当遇到“c”或接收到最大值n=255时,将调用回调函数
* 第三个参数 回调函数 形如 function(data) end
* 第四个参数 填0/1,当填入0时0---UART的输入将不会进入lua解释器,可以接受二进制数据
* 1---UART的输入将进入lua解释器并运行
*/
gpio.mode(4,gpio.OUTPUT)
UartReceData = ""
UartReceCnt = 0
UartReceDatastat = false
UartReceTempCnt = 0
uart.on("data",0,function(data) --注册串口函数
UartReceData = UartReceData..data
UartReceCnt = UartReceCnt + 1
end,1)
if not tmr.create():alarm(10, 1, function() --定时器用于判断上一帧数据与下一帧数据的间隔时间
if UartReceCnt ~= 0 then
if UartReceTempCnt == UartReceCnt then
UartReceCnt = 0
UartReceTempCnt = 0
if UartReceData == "open" then
gpio.write(4,0)
end
if UartReceData == "close" then
gpio.write(4,1)
end
uart.write(0,UartReceData) --将内容回写至串口
UartReceData = ""
else
UartReceTempCnt = UartReceCnt
end
end
end)
then
print("fail")
end
现象:
红色框内为回写的内容