Kode berikut menggunakan modul SerialPort untuk mendengarkan data dari koneksi bluetooth.
Saya mengharapkan untuk melihat aliran data dalam format Heksadesimal dicetak di konsol. Tapi konsol itu hanya menampilkan beberapa simbol aneh. Saya ingin tahu bagaimana cara memecahkan kode dan menampilkan data di konsol.
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());
});
});
Jawaban:
Kode ini akan menunjukkan buffer data sebagai string hex:
buff.toString('hex');
sumber
Buffer.from( buf.toString('hex'),'hex');
[object ArrayBuffer]
? apa yang salah?Jawaban teratas adalah cara termudah untuk melakukannya.
Metode alternatif:
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('');
sumber