добавить 0x к шестнадцатеричному числу в байте буфера с помощью javascript

#javascript #node.js #serial-port #hex

#javascript #node.js #последовательный порт #шестнадцатеричное

Вопрос:

Я пытаюсь связаться со старой машиной, используя node.js / electron и RS232C. Базовая связь работает, но машина будет принимать только байты, которым предшествует 0x.

 var buffer = new Buffer([0x59]);
port.write(buffer);
  

будет работать, и команда будет выполнена, однако:

 var buffer = new Buffer([59]);
port.write(buffer);
  

приведет к зависанию компьютера.

Моя проблема в том, что я пытаюсь динамически создавать байты, а машина продолжает зависать. С помощью анализатора портов я вижу, что отправляется 59, к сожалению, анализатор отображает 59 как для 0x59, так и для 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 не требуется, но, похоже, это в моем случае, если в моем коде нет ошибки.

Приветствуется любая помощь в поиске решения.

Ответ №1:

после целого дня попыток в течение 10 минут после публикации я понял это. в моем parseInt отсутствует 16-й радиус

 new Buffer([parseInt(bufferNum.toString(16))])]
  

должно быть

 new Buffer([parseInt(bufferNum.toString(16),16)])]
  

Надеюсь, этот или какой-то другой код будет кому-то полезен.