江东周小川 2019-06-14 16:49 采纳率: 100%
浏览 1187
已结题

JS十六进制字符串转字符串问题

我在做一个服务器用MQTT协议与DTU终端通讯,发送modbus指令,DTU接收到指令后下发给plc,来控制灯泡的问题。

现在要发送的modbus请求帧是“01 05 00 02 FF 00 2D FA”,这是一段十六进制字符串。
我通过这样一个函数hexToString = function (hex) {
var hex = hex.toString();
var str = '';
for (var i = 0; i < hex.length; i += 2)
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
return str;
};
将这段modbus请求帧转成字符串,然后下发给DTU.
然后问题来了,用串口软件监听DTU接收的消息内容,翻译成十六进制之后
这段请求帧变成了“01 05 00 02 C3 BF 00 2D C3 BA”图片说明
这是什么原因呢?是hexToString函数不对吗?我在网上也找了很多十六进制字符串转字符串的函数代码,跟我这个差不多,我也都调试过,都没有解决这个问题。这究竟是什么问题?
求大神!!!

  • 写回答

3条回答 默认 最新

  • threenewbee 2019-06-14 17:18
    关注

    我把你上下两排16进制转换成2进制
    100000101000000000000001011 111111000000000010110111 111010
    1000001010000000000000010110000111011111100000000001011011100001110111010
    图片说明

    可以看出来,第2行被加上了00001110这一个字节,可能是串口的验证数据,或者报文存在间隙

    评论

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码