精易论坛

标题: 请问主板机通道序号怎么读取 [打印本页]

作者: 精易啊牛    时间: 2026-1-8 21:27
标题: 请问主板机通道序号怎么读取
本帖最后由 精易啊牛 于 2026-1-8 21:31 编辑

请问主板机通道序号怎么读取,好像这个工具一样,谢谢

作者: qf123    时间: 2026-1-8 21:49
.版本 2

.程序集 窗口程序集_启动窗口
.程序集变量 串口对象, 串口
.程序集变量 主板协议_查询通道指令, 字节集  ' 存放主板查询指令
.程序集变量 主板协议_通道总数字节位置, 整数型  ' 通道总数在返回数据中的字节位置
.程序集变量 主板协议_通道序号起始位置, 整数型  ' 通道序号起始字节位置
.程序集变量 主板协议_通道状态起始位置, 整数型  ' 通道状态起始字节位置

.子程序 __启动窗口_创建完毕


主板协议_查询通道指令 = {0x7B, 0x7B, 0x02, 0x00, 0x7D, 0x7D}
主板协议_通道总数字节位置 = 1
主板协议_通道序号起始位置 = 2
主板协议_通道状态起始位置 = 3


超级列表框_通道信息.列取标题 (0) = “通道序号”
超级列表框_通道信息.列取标题 (1) = “通道状态”
超级列表框_通道信息.列设置宽度 (0, 100)
超级列表框_通道信息.列设置宽度 (1, 100)


.计次循环首 (20, 计次变量)
    组合框_串口号.加入项目 (“COM” + 到文本 (计次变量), )
.计次循环尾 ()
组合框_串口号.现行选中项 = 0

.子程序 _按钮_连接串口_被单击


串口对象.串口号 = 组合框_串口号.取项目文本 (组合框_串口号.现行选中项)
串口对象.波特率 = 9600
串口对象.数据位 = 8
串口对象.停止位 = 1
串口对象.校验位 = 0


.如果真 (串口对象.打开 ())
    标签_状态.标题 = “已连接:” + 串口对象.串口号
    按钮_连接串口.禁止 = 真
    按钮_读取通道.禁止 = 假
    调试输出 (“串口连接成功:” + 串口对象.串口号)
.如果真结束
.如果真 (串口对象.是否打开 () = 假)
    标签_状态.标题 = “连接失败!”
    信息框 (“串口连接失败,请检查串口号或主板是否上电”, 0, )
    调试输出 (“串口连接失败,错误码:” + 到文本 (取最后错误 ()))
.如果真结束


.子程序 _按钮_读取通道_被单击
.局部变量 接收数据, 字节集
.局部变量 通道总数, 整数型
.局部变量 计次变量, 整数型
.局部变量 通道序号, 文本型
.局部变量 通道状态值, 整数型
.局部变量 通道状态文本, 文本型
.局部变量 列表项索引, 整数型


超级列表框_通道信息.全部删除 ()


串口对象.写数据 (主板协议_查询通道指令, 取字节集长度 (主板协议_查询通道指令))
标签_状态.标题 = “已发送查询指令,等待返回...”
调试输出 (“发送查询指令:” + 字节集到十六进制 (主板协议_查询通道指令))


延迟 (1000)


接收数据 = 串口对象.读数据 (串口对象.取数据长度 ())
.如果真 (取字节集长度 (接收数据) = 0)
    标签_状态.标题 = “未收到主板返回数据!”
    信息框 (“未收到主板返回数据,请检查指令是否正确”, 0, )
    返回 ()
.如果真结束
调试输出 (“收到主板返回数据:” + 字节集到十六进制 (接收数据))


通道总数 = 接收数据 [主板协议_通道总数字节位置]
.如果真 (通道总数 = 0)
    标签_状态.标题 = “解析通道总数失败!”
    信息框 (“未解析到通道总数,请检查协议配置”, 0, )
    返回 ()
.如果真结束
标签_状态.标题 = “共解析到” + 到文本 (通道总数) + “个通道”


.计次循环首 (通道总数, 计次变量)

    通道序号 = 到文本 (接收数据 [主板协议_通道序号起始位置 + (计次变量 - 1) × 2])
    .如果真 (到数值 (通道序号) < 10)
        通道序号 = “0” + 通道序号
    .如果真结束


    通道状态值 = 接收数据 [主板协议_通道状态起始位置 + (计次变量 - 1) × 2]
    通道状态文本 = 选择 (通道状态值 = 1, “HUB”, 通道状态值 = 2, “OTG”, 通道状态值 = 3, “关机”, “未知”)


    列表项索引 = 超级列表框_通道信息.插入表项 (, , , , , )
    超级列表框_通道信息.置标题 (列表项索引, 0, 通道序号)
    超级列表框_通道信息.置标题 (列表项索引, 1, 通道状态文本)
.计次循环尾 ()

.子程序 字节集到十六进制, 文本型, 公开, 辅助函数:字节集转十六进制便于调试
.参数 字节集数据, 字节集
.局部变量 计次变量, 整数型
.局部变量 结果文本, 文本型

.计次循环首 (取字节集长度 (字节集数据), 计次变量)
    结果文本 = 结果文本 + 取十六进制文本 (字节集数据 [计次变量]) + “ ”
.计次循环尾 ()
返回 (结果文本)

.子程序 __启动窗口_将被销毁


.如果真 (串口对象.是否打开 ())
    串口对象.关闭 ()
    调试输出 (“串口已关闭”)
.如果真结束


.子程序



作者: 精易啊牛    时间: 2026-1-11 15:28
qf123 发表于 2026-1-8 21:49
.版本 2

.程序集 窗口程序集_启动窗口

这是要有串口支持库才行,请问这个支持库在哪可以下载呢,谢谢




欢迎光临 精易论坛 (https://bbs.ijingyi.com/) Powered by Discuz! X3.4