【发布时间】:2021-02-03 20:50:13
【问题描述】:
我正在尝试使用 node.js/electron 和 RS232C 与旧机器通信。基本通信正常,但机器只接受以 0x 开头的字节。
var buffer = new Buffer([0x59]);
port.write(buffer);
将起作用并且命令将执行,但是:
var buffer = new Buffer([59]);
port.write(buffer);
将冻结机器。
我的问题是我正在尝试动态创建字节并且机器一直冻结。使用端口分析器,我可以看到正在发送 59,不幸的是,分析器显示 0x59 和 59 均为 59。
我的代码是:
var bufferHead = new Buffer([0x06,0x02]);
var bufferHead2 = new Buffer([0x30,0x41,0x46,0x4C]);
var bufferData = new Buffer([0x4E,0x45,0x57,0x54,0x45,0x58,0x7E,0x31,0x2E,0x54,0x58,0x54,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x32,0x30,0x2D,0x31,0x30,0x2D,0x32,0x30,0x20,0x20,0x20,0x37,0x48,0x33,0x30,0x4D,0x0D]);
var bufferFoot = new Buffer([0x03]);
var bufferNum=0;
var preBuffer = Buffer.concat([bufferHead2, bufferData, bufferFoot]);
for (let x of preBuffer) {
bufferNum = bufferNum ^ x;
}
var finalBuffer = Buffer.concat([bufferHead, preBuffer, new Buffer([parseInt(bufferNum.toString(16))])]);
port.write(finalBuffer);
现在几乎所有的字节都是硬编码的,但最后一切都需要是动态的。 如何附加 0x 以创建与硬编码相同的字节? 有很多帖子说不需要 0x,但在我的情况下似乎是这样,除非我的代码有错误。
感谢您寻求解决方案的任何帮助。
【问题讨论】:
标签: javascript node.js serial-port hex