В следующем коде используется модуль SerialPort для прослушивания данных из соединения Bluetooth.
Я ожидаю увидеть поток данных в шестнадцатеричном формате, напечатанный на консоли. Но консоль просто показывает какие-то странные символы. Я хочу знать, как я могу декодировать и отображать данные в консоли.
var serialPort = new SerialPort("/dev/tty.EV3-SerialPort", {
parser: SP.parsers.raw
}, false); // this is the openImmediately flag [default is true]
serialPort.open(function () {
console.log('open');
serialPort.on('data', function(data) {
var buff = new Buffer(data, 'utf8'); //no sure about this
console.log('data received: ' + buff.toString());
});
});
Ответы:
Этот код покажет буфер данных в виде шестнадцатеричной строки:
buff.toString('hex');
источник
Buffer.from( buf.toString('hex'),'hex');
[object ArrayBuffer]
? что не так?Главный ответ - самый простой способ сделать это.
Альтернативный метод:
data = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]); Array.prototype.map.call(new Uint8Array(data), x => ('00' + x.toString(16)).slice(-2)) .join('').match(/[a-fA-F0-9]{2}/g).reverse().join('');
источник