1 -- LuaTools需要PROJECT和VERSION这两个信息
5 log.info("main", PROJECT
, VERSION
)
7 -- 引入必要的库文件(lua编写), 内部库不需要require
11 --添加硬狗防止程序卡死,在支持的设备上启用这个功能
12 wdt
.init(9000)--初始化watchdog设置为9s
13 sys
.timerLoopStart(wdt
.feed
, 3000)--3s喂一次狗
16 log.info("main", "soft uart demo")
18 local function resouce()
19 local rtos_bsp
= rtos
.bsp()
20 if rtos_bsp
== "AIR101" then
21 return nil,nil,nil,nil,nil,nil,nil
22 elseif rtos_bsp
== "AIR103" then
23 return nil,nil,nil,nil,nil,nil,nil
24 elseif rtos_bsp
== "AIR105" then
25 return pin
.PA07
,0,pin
.PA06
,1,115200,-20,-10
26 elseif rtos_bsp
== "ESP32C3" then
27 return nil,nil,nil,nil,nil,nil,nil
28 elseif rtos_bsp
== "ESP32S3" then
29 return nil,nil,nil,nil,nil,nil,nil
30 elseif rtos_bsp
== "EC618" then
31 return 17,0,1,2,19200,0,-10
33 log.info("main", "bsp not support")
38 local tx_pin
,tx_timer
,rx_pin
,rx_timer
,br
,tx_adjust
,rx_adjust
= resouce()
40 local uartid
= uart
.createSoft(tx_pin
,tx_timer
,rx_pin
,rx_timer
,tx_adjust
,rx_adjust
)
42 local result
= uart
.setup(
44 br
,--软件串口波特率根据平台的软硬件配置有不同的极限
52 -- sys.timerLoopStart(uart.write,1000, uartid, "test")
53 -- 收取数据会触发回调, 这里的"receive" 是固定值
54 uart
.on(uartid
, "receive", function(id
, len
)
57 -- s = uart.read(id, 1024)
58 s
= uart
.read(id
, len
)
59 if #s
> 0 then -- #s 是取字符串的长度
60 -- 如果传输二进制/十六进制数据, 部分字符不可见, 不代表没收到
61 -- 关于收发hex值,请查阅 https://doc.openluat.com/article/583
62 log.info("uart", "receive", id
, #s
, s
:toHex())
69 uart
.on(uartid
, "sent", function(id
)
70 log.info("uart", "sent", id
)
73 -- 用户代码已结束---------------------------------------------
76 -- sys.run()之后后面不要加任何语句!!!!!