110

次のコードは、SerialPort モジュールを使用して、Bluetooth 接続からのデータをリッスンします。

16 進形式のデータ ストリームがコンソールに出力されることを期待しています。しかし、コンソールには奇妙なシンボルが表示されるだけです。コンソールでデータをデコードして表示する方法を知りたいです。

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());
 });  
});
4

2 に答える 2

247

このコードは、データ バッファーを 16 進文字列として表示します。

buff.toString('hex');
于 2014-07-01T07:01:21.637 に答える
0

トップアンサーは、それを行う最も簡単な方法です。

別の方法:

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('');
于 2017-07-25T19:45:31.930 に答える