普通用户
报文解析 [复制链接]
sunriseshu 发表于 2026-05-07 67 2

想发送报文指令【00 00 00 00 00 06 01 01 0C 00 00 1E】,结果变成了以下指令,帮忙看下是什么原因


事件 读取发送.周期事件(源对象 为 时钟)

常规发送("00 00 00 00 00 06 01 01 0C 00 00 1E")
结束 事件



函数 常规发送(指令 为 文本型)
变量 结果 为 文本型[]
变量 数量 为 整数型
结果 = 分割文本(指令," ")
数量=(取文本长度 (指令)-((取文本长度 (指令)+1)/3-1))/2
变量 数据 为 字节型[]=创建 字节型[数量]
变量循环(计次=0,数量-1,1)
数据[计次]=到字节(到文本(到整数((结果[计次]))))
结束循环
客户1.发送数据(数据)
结束 函数

sunriseshu 2026-05-08

好的,谢谢,后面用直接发送解决了

回复
官方技术组 2026-05-08

您好,您发送的指令不正确的原因是:“常规发送”函数中的转换算法不正确,正确的方式为:

函数 常规发送(指令  文本型)
    变量 指令组 = 分割文本(指令," ")
    变量 指令长度 = 取数组成员数(指令组)
    变量 指令字节集  字节型[] = 创建 字节型[指令长度]
    变量循环(i = 0,指令长度,1)
        指令字节集[i] = (字节型) Integer.parseInt(指令组[i], 16)
    结束循环
    客户1.发送数据(指令字节集)
结束 函数

如果在知道明确指令整数值(16进制)的条件下,建议直接发送16进制更好,这样可以避免转换过程中的导致的不确定性问题,例如:

变量 字节数据1  字节型[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x01, 0x0C, 0x00, 0x00, 0x1E }
客户1.发送数据(字节数据1)
回复
 作者信息
sunriseshu
普通用户 云验证
专业开发指导服务

响应时间:5分钟

服务方式:官方1对1服务

工作时间:工作日 9:00 - 18:30

专业团队 · 开发指导 · 极速响应


官网 | 基础视频教程 | 在线文档 下载 VcnStudio IDE

© VcnStudio Inc All Rights Reserved

蜀ICP备17024229号