LLCOM串口工具使用记录

📅 2026/7/24 22:17:14 👁️ 阅读次数 📝 编程学习
LLCOM串口工具使用记录

--循环发送快捷发送区数据 ---例子一 --发送数据中间间隔时间(单位ms) local sendDelay = 1000 --待发送数据的顺序 local sendList = {1,2,4,1,6,8} --你也可以用下面的代码批量生成 --从2号发到15号数据 --[[ for i=2,15 do table.insert(sendList, i) end ]] sys.taskInit(function () while true do for _,i in pairs(sendList) do local data = apiQuickSendList(i) if data then log.info("send data",apiSendUartData(data),data) end sys.wait(sendDelay) end end end) --[[ ---例子二 --待发送数据的顺序和延时时间 local sendList = { {1,1000}, {3,500}, {2,2000}, {4,300}, {5,6000}, {6,1500}, } sys.taskInit(function () while true do for _,i in pairs(sendList) do local data = apiQuickSendList[i[1] ] if data then log.info("send data",apiSendUartData(data),data) end sys.wait(i[2]) end end end) ]]

下面先逐行分析你给出的脚本,再给出“reboot 不在快捷发送区、每 2000 ms 周期性发送”的完整可直接用的脚本


一、原脚本详细解析

1️⃣ 基础配置

local sendDelay = 1000
  • 发送间隔:1000 ms(1 秒)

  • 用于sys.wait(sendDelay)


2️⃣ 发送队列(例子一)

local sendList = {1,2,4,1,6,8}
  • sendList中存放的是快捷发送区的索引号

  • 例如:

    • 1→ 快捷发送区第 1 条

    • 2→ 快捷发送区第 2 条

⚠️关键点

apiQuickSendList(i)

👉只能取“快捷发送区已存在的数据”


3️⃣ 批量生成(注释示例)

for i=2,15 do table.insert(sendList, i) end
  • 动态生成发送序列

  • 常用于测试或连续指令


4️⃣ 主任务逻辑

sys.taskInit(function () while true do for _,i in pairs(sendList) do local data = apiQuickSendList(i) if data then log.info("send data",apiSendUartData(data),data) end sys.wait(sendDelay) end end end)

执行流程

步骤

说明

while true

永久循环

pairs(sendList)

依次取出索引

apiQuickSendList(i)

取快捷发送数据

apiSendUartData(data)

真正发送

sys.wait()

控制发送节奏

特点

  • 顺序发送

  • 自动循环

  • 适合固定快捷数据


二、需求拆解

reboot不在快捷发送区,想每隔2000ms周期发送一次,给出脚本

reboot 不在快捷发送区

不是快捷索引

不能走apiQuickSendList()

每 2000 ms 发送一次

循环发送

👉 正确做法:直接发送字符串 / 十六进制数据


三、推荐实现方案(最稳妥 ✅)

✅ 方案一:直接发送 reboot 字符串(最常见)

-- 发送间隔(ms) local sendDelay = 2000 sys.taskInit(function () while true do -- reboot 命令(根据你的设备协议调整) local data = "reboot\r\n" -- 通过 UART 发送 apiSendUartData(data) -- 日志 log.info("send reboot", data) -- 等待 2 秒 sys.wait(sendDelay) end end)

📌适用场景

  • AT 指令设备

  • Linux / MCU 支持reboot

  • 串口终端命令


✅ 方案二:发送十六进制 reboot(工业设备常用)

如果你的设备需要HEX 格式

local sendDelay = 2000 sys.taskInit(function () while true do -- 示例:reboot 十六进制(按你设备协议改) local data = string.char(0x72,0x65,0x62,0x6F,0x6F,0x74,0x0D,0x0A) apiSendUartData(data) log.info("send reboot hex") sys.wait(sendDelay) end end)

✅ 方案三:如果你想“混合快捷区 + reboot”

local sendDelay = 2000 sys.taskInit(function () while true do -- 发送快捷区第 1 条 local d1 = apiQuickSendList(1) if d1 then apiSendUartData(d1) log.info("quick send", d1) end sys.wait(sendDelay) -- 发送 reboot apiSendUartData("reboot\r\n") log.info("send reboot") sys.wait(sendDelay) end end)

四、重要提醒(非常关键 ⚠️)

项目

说明

apiQuickSendList()

只能用于快捷区

reboot

必须直接发送字符串/HEX

换行符

有些设备必须是\r\n

波特率

确保 UART 参数一致

日志

log.info()方便调试


做成可配置指令表