|
|
楼主
发表于 2026-1-8 21:49:56
|
只看该作者
山东省烟台市
.版本 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, 通道状态文本)
.计次循环尾 ()
.子程序 字节集到十六进制, 文本型, 公开, 辅助函数:字节集转十六进制便于调试
.参数 字节集数据, 字节集
.局部变量 计次变量, 整数型
.局部变量 结果文本, 文本型
.计次循环首 (取字节集长度 (字节集数据), 计次变量)
结果文本 = 结果文本 + 取十六进制文本 (字节集数据 [计次变量]) + “ ”
.计次循环尾 ()
返回 (结果文本)
.子程序 __启动窗口_将被销毁
.如果真 (串口对象.是否打开 ())
串口对象.关闭 ()
调试输出 (“串口已关闭”)
.如果真结束
.子程序
|
|