Luat实例教程:UART串口功能
2018-03-23 本文已影响66人
Luat物联网通信模块
本示例实现的功能是:uart接收外围设备的输入,回复相同的字符
1.在编辑工具建立一个test.lua的文件(不一定叫这个名字,用户可以自己随便取名)
2.设置本文件被全体可见。也就意味着,一旦test被某一文件加载,则test在任何文件中均可被看见,即test中全局变量和函数均可被任何文件调用。
module(...,package.seeall)
3.设置一些变量,其中:UART_ID是串口id,这里用的是uart1。
--串口ID,1对应uart1
--如果要修改为uart3,把UART_ID赋值为3即可
local UART_ID = 1
4.然后,定义print函数,以用于调试:
local function print(...)
_G.print("test",...)
end
5.创建一个函数write,实现的功能是:从串口发送数据。
function write(s)
print("write",s)
uart.write(UART_ID,s.."\r\n")
end
6.创建一个函数read,实现功能是:读取串口接收到的数据
local function read()
local data = ""
--底层core中,串口收到数据时:
--如果接收缓冲区为空,则会以中断方式通知Lua脚本收到了新数据;
--如果接收缓冲器不为空,则不会通知Lua脚本
--所以Lua脚本中收到中断读串口数据时,每次都要把接收缓冲区中的数据全部读出,这样才能保证底层core中的新数据中断上来,此read函数中的while语句中就保证了这一点
while true do
data = uart.read(UART_ID,"*l",0)
if not data or string.len(data) == 0 then break end
--打开下面的打印会耗时
print("read",data)
write(data)
end
end
7.注册串口的数据接收函数,配置并且打开串口
sys.reguart(UART_ID,read) --注册串口的数据接收函数,串口收到数据后,会以中断方式,调用read接口读取数据
uart.setup(UART_ID,115200,8,uart.PAR_NONE,uart.STOP_1) --配置并且打开串口
8.在编辑工具中建立一个名为main.lua的文件。lua脚本的执行从main.lua开始,main.lua是入口文件(注意:main.lua只能有一个)。在main.lua中把test加载进去就好了。sys.init()是对系统初始化,sys.run()是系统主程序。这两句必须有。
--重要提醒:必须在这个位置定义MODULE_TYPE、PROJECT和VERSION变量
--MODULE_TYPE:模块型号,目前仅支持Air201、Air202、Air800
--PROJECT:ascii string类型,可以随便定义,只要不使用,就行
--VERSION:ascii string类型,如果使用Luat物联云平台固件升级的功能,必须按照"X.X.X"定义,X表示1位数字;否则可随便定义
MODULE_TYPE = "Air202"
PROJECT = "UART"
VERSION = "1.0.0"
require"sys"
require"test"
if MODULE_TYPE=="Air201" then
require"wdt"
end
sys.init(0,0)
sys.run()
!!!attention
一个工程只有一个main.lua
- uart.setup设置串口参数
- 详情代码见下链接