私はArduinoとノード。しかし、問題は正しい読書と正確な読書の間にいくつかのゴミの読書を持っている間に私が通信するときです。まだこの問題を解決する方法を理解できませんか?
COMポートからデータを読み込むために使用されるNodejsの部分は次のとおりです
var SerialPort = require("serialport").SerialPort;
var serialport = new SerialPort("COM23",{baudrate:9600});
serialport.on("open", function(){
serialport.on("data", function(data){
console.log(data[0]);
});
});
ここに私の簡単なArduinoコードがあります
int led = 13;
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
Serial.write(1);
delay(1000);
digitalWrite(led, LOW);
Serial.write(0);
delay(1000);
}
回答:
回答№1は2転送されるデータのサイズを制限し、シリアル送信用のパーサーも定義します。
シリアルポートのドキュメントを見てください https://github.com/voodootikigod/node-serialport#parsers
"raw"と "readline"の2つのオプションがあります。
ボックス外では、node-serialportは2つの単純に生のバッファをデータイベントとして出力するパーサーと、使い慣れた "readline"スタイルの解析を提供するパーサーです。 readlineパーサを使用するには、区切り文字として "n"を指定する必要があります。
ここにnode.jsの例があります
var sp = new SerialPort("/dev/tty.usbmodem14111", {
//sp.parsers.readline("r")
//serialport.parsers.raw
baudrate: 9600,
parser: serialport.parsers.readline("n")
});
Arduino側では、Serial関数println()を使用します。
Serial.println("your message to the node server");
私はこれが役立つことを願っています