1

rs232 に関する私の知識はほとんどありません。シリアル ポートに接続された LED ディスプレイがあります。node.js v8.22 と node-serialport v1.1.0 を使用しています。

LED ディスプレイのユーザー ガイドでは、[hex80]xxxxxx[cr] を送信するよう求めています。ここで、各「x」は 1 桁の数字 (0 ~ 9) です。ボーレートも指示どおりに9600に設定しています。

私は書くことができると仮定しています

sp.write(0x80);
sp.write('123456\r');

しかし正直なところ、[hex80]xxxxxx[cr] を javascript/serialport のニーズに変換する方法がわかりません。いろいろ試してみました。

sp.write([0x80,55,55,55,49,49,48,'\r']); // hex80 + 数字のすべての文字コード sp.write(128+'123456\r') // 128 は 0x80 の 10 進数です

ごちゃごちゃしたものが表示されるようになりました。以下の完全なコード。

var serialPort, sp;

var comPort = '/dev/cu.usbserial';

var serialPort = require('serialport').SerialPort
sp = new serialPort(comPort, { baudrate: 9600, parser: parserJaCircuitsChrono() });

sp.on("open", function () {
    console.log(comPort + ' is open');
    sp.write(0x80);
    sp.write('123456\r');
});

どんな考えや助けも大歓迎です。

ありがとう。

4

2 に答える 2

0

シリアルポートではなく、コンソールでこれをテストしましたが、うまくいくはずです。

2 つのオプションがあります。1) Unicode にエスケープするか、2) String.fromCharCode 関数 ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/ fromCharCode )

Unicode へのエスケープは非常に簡単です。\uXXXX を使用するだけです。XXXX は番号の 16 進数表現です。

sp.write('\u0080123456\r');

または、String.fromCharCode を使用できます。

sp.write(String.fromCharCode(128) + '123456\r');
于 2013-08-20T17:08:24.463 に答える