window 安装lua rs232

1、下载luarocks/
   https://github.com/luarocks/luarocks/wiki/Download

2、管理员身份cmd方式执行以下指令: luarocks install rs232

3、串口实现

local rs232 = require "rs232"

-- 打开串口 COM3 并配置参数
local e, p = rs232.open('COM3')
if e ~= rs232.RS232_ERR_NOERROR then
    print(string.format("无法打开串口 COM3: %s", rs232.error_tostring(e)))
    return
end

-- 配置串口参数
assert(p:set_baud_rate(rs232.RS232_BAUD_9600) == rs232.RS232_ERR_NOERROR)
assert(p:set_data_bits(rs232.RS232_DATA_8) == rs232.RS232_ERR_NOERROR)
assert(p:set_parity(rs232.RS232_PARITY_NONE) == rs232.RS232_ERR_NOERROR)
assert(p:set_stop_bits(rs232.RS232_STOP_1) == rs232.RS232_ERR_NOERROR)
assert(p:set_flow_control(rs232.RS232_FLOW_OFF) == rs232.RS232_ERR_NOERROR)

-- 设置 RTS 线
assert(p:set_rts(rs232.RS232_RTS_ON) == rs232.RS232_ERR_NOERROR)

-- 发送数据
arr = {0x12, 0x34, 0x45, 0x56}
function _tableTostr(buff)

    if buff == nil 
    then 
        return ''
    end

    local str = ''
    for i=1,#(buff) 
    do
      str = str .. string.format('%02X', buff[i])..' '
    end

    return str
end

local err, len_written = p:write(_tableTostr(arr))
if err ~= rs232.RS232_ERR_NOERROR then
    print("发送数据失败: " .. rs232.error_tostring(err))
else
    print("成功发送数据: " .. len_written .. " 字节")
end

-- 读取数据
local err, data_read, size = p:read(64, 10)
if err ~= rs232.RS232_ERR_NOERROR then
    print("读取数据失败: " .. rs232.error_tostring(err))
else
    print("读取数据: " .. data_read)
end

-- 关闭串口
p:close()

 

posted @ 2024-08-23 15:16  cogitoergosum  阅读(11)  评论(0编辑  收藏  举报