串口通信 3.1.11

注意

由于通信不稳定等原因,可能导致错误发生。大多数情况下,需要使用错误处理机制来捕获错误,防止异常退出。

打开串口设备

com = serial.open(path)

默认使用 波特率115200、 8 位数据位、1 位停止位、无检验位,如需更改请联系我们。

  • 参数
    • path。串口设备地址。

返回串口实例 或 抛出错误。

设置超时时间

com:set_timeout(timeout)
  • 参数
    • timeout 超时时间,单位毫秒(ms)。默认800ms

设置波特率

com:set_baud_rate(baud_rate)

设置串口波特率

  • 参数
    • baud_rate。串口波特率。默认115200

返回空 或 抛出连接错误

设置奇偶校验位

com:set_parity(parity)

设置奇偶校验位

  • 参数
    • parity。奇偶校验位(None: 无奇偶校验; Odd: 奇校验; Even: 偶校验)。默认无奇偶校验位

返回空 或 抛出连接错误

发送数据

com:write(data)

通过串口发送u8数组

  • 参数
    • data。待发送的u8数组。

返回空 或 抛出连接错误

接收数据

data = com:read(len)

通过串口接收u8数组

  • 参数
    • len。单次接收的最大缓冲长度,可空,默认64字节。

返回u8数组 或 抛出连接错误

示例

local com1 = serial.open("/dev/ttyS1")
com1:set_timeout(200)
com1:set_baud_rate(9600)

local str = "123"
com1:write({string.byte(str, 1, #str)}) -- 发送字符串
com1:write({0x01, 0x02, 0x03}) -- 发送HEX

-- 读取串口,使用pcall捕获错误
success, result = pcall(function() return com1:read() end)
if success then
  print(result) -- 打印HEX
  print(string.char(table.unpack(result))) -- 打印字符串
else
  print("Error: ", result)
end

-- 读取串口,由于未捕获错误,当发生错误时,任务异常退出
local data = com1:read()
print(data) -- 打印HEX
print(string.char(table.unpack(data))) -- 打印字符串