Luat实例教程:uart串口功能

本示例实现的功能是: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

发表评论

电子邮件地址不会被公开。 必填项已用*标注