0
我正在使用Web界面(節點+ socket.io + node-serialport)發送一個小項目來發送數據傳輸到串口,然後由Arduino讀取設置的引腳高電平,爲led供電(我將稍後轉換爲模型火箭點火系統)。爲什麼Arduino需要在使用之間重置(Node.js + node-serialport + socket.io)
下面我有什麼工作,但也有我以前遇到過,我想,以確保最高的可靠性,以解決兩個基本問題:
- 爲什麼我到Arduino重置每個之間頁面加載/串行連接爲了這個工作?
- 爲什麼當我不限制草圖循環執行多少次(通過x)時,即使我只發送一個字符,它也會連續向串口打印數據?
素描
int led = 8;
int x = 0;
void setup() {
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop() {
if(x < 1) {
if(Serial.available() > 0) {
Serial.print(1);
digitalWrite(led, HIGH);
delay(5000);
digitalWrite(led, LOW);
x++;
}
}
}
app.js(簡稱爲簡潔起見)
socket.on('launch', function(data) {
for(var i = 5; i > 0; i--) {
socket.emit('countdown', { count: i });
if(i !== 1) {
sleep(1);
}
}
serialPort = new SerialPort("/dev/tty.usbserial-A6004amR", {
baudrate: 9600
});
serialPort.on('open', function (err) {
console.log('port opened... Press reset on the Arduino.');
serialPort.on('close', function (err) {
console.log('port closed');
});
serialPort.on('error', function (err) {
console.log('error: ' + err);
});
serialPort.on('data', function(data) {
// keeps getting 'data' events when x doesn't limit the loop
console.log('data received: ' + data);
});
serialPort.write(2, function(err, result) {
console.log('sent ' + result + ' chars.');
});
});
這不會造成無限循環嗎?如果有數據,您正在讀取數據,然後打印1,這會導致循環再次執行,因爲緩衝區中有數據(1)。 – doremi
No. RX引腳用於接收來自主機的數據,引腳TX用於傳輸數據。因此,在RX引腳上讀/可用外觀,而打印寫入TX引腳。 – sraok