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 @   cogitoergosum  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2022-08-23 linux 大小端数据交换
点击右上角即可分享
微信分享提示