Skip to content
On this page

串口模块 AI 规范

本文档用于 AI 生成串口通信 Lua 代码。参数规则已按 HexLuaAPI_Serial.hpp 校对。

打开串口

支持两种写法:

lua
local sp, err = openSerial("/dev/ttyUSB0", 115200)
lua
local serial = require("serial")
local sp, err = serial.open("/dev/ttyUSB0", 115200)

参数:

  • dev:字符串,必须以 /dev/tty/dev/serial/ 开头。
  • baud:整数波特率。

支持波特率:

text
9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 4000000

打开失败返回:

lua
nil, "错误信息"

读写数据

lua
local n = sp:write("hello")
local data = sp:read(256, 100)
sp:flush()

参数:

  • write(data)data 为字符串,可以是普通文本或二进制字符串。
  • read(max_len, timeout_ms)
    • max_len 可选,默认 256,范围 1..65536
    • timeout_ms 可选,默认 100
    • 0 表示非阻塞立即返回。
    • 大于 0 表示最多等待指定毫秒。
    • 小于 0 表示阻塞直到读到数据或错误。

返回值:

  • write 返回实际写入字节数。
  • read 返回字符串;超时或出错返回空字符串 ""
  • flush 无返回值。

列出设备

lua
local nodes = listDevNodes("ttyUSB")
for i, node in ipairs(nodes) do
    print(i, node)
end

规则:

  • filter 可选,不传表示不过滤。
  • 返回 Lua 数组。

推荐模板

lua
local sp, err = openSerial("/dev/ttyUSB0", 115200)
if not sp then
    print("打开串口失败:", err)
    return
end

sp:write("AT\r\n")
local data = sp:read(1024, 500)
if data ~= "" then
    print("收到:", data)
else
    print("未收到数据")
end

AI 生成禁忌

  • 不要生成 Windows 串口名,例如 COM3
  • 不要使用不在支持列表中的波特率。
  • 不要假设 read 失败返回 nil,它返回空字符串。
  • 不要忘记检查 openSerialnil, err