1
我第一次使用node.js和一個簡單的網站來控制電機。使用串口時,Node.js停止響應
在網站上有2個按鈕:「左」和「右」。您必須按住「左」或「右」按鈕才能轉動電機。當你讓按鈕開始馬達停止。 電機連接到服務器上的串行端口上的Arduino。 它的工作原理,但
問題
當我使用我的電話和垃圾郵件的按鈕服務器有時會停止,直到我重新啓動服務器響應爲大家。由於WiFi延遲,我認爲這些功能被稱爲太快。所以我試着在Chrome控制檯中調用這些功能。
LeftPressed();LeftReleased();LeftPressed();LeftReleased();
事實上,運行它們幾次後,服務器停止響應。 沒有錯誤,沒有崩潰..
當我刪除motorPort.write(message);
保持服務器響應。
如何防止服務器停止響應?
客戶端(Javascript語言,瀏覽器)
function LeftPressed() {
socket.emit('steer', { left: true });
}
function LeftReleased() {
socket.emit('steer', { left: false });
}
function RightPressed() {
socket.emit('steer', { right: true });
}
function RightReleased() {
socket.emit('steer', { right: false });
}
服務器(node.js的)
const SerialPort = require("serialport");
const express = require('express');
const app = express();
const server = require('http').createServer(app);
const io = require('socket.io')(server)
const motorPort = new SerialPort('/dev/arduinoUnoMicroUSB', {
baudrate: 9600,
});
app.use(express.static('web'));
server.listen(8081, function() {
console.log("Server running...");
});
io.on('connection', function (socket) {
socket.on('steer', function (data) {
var message = "2"; //stop
if (data.left != undefined) {
console.log("Left: " + data.left); //log to Console (below)
if (data.left) {
message = "1" //turn left
}
}
if (data.right != undefined) {
console.log("Right: " + data.right);
if (data.right) {
message = "3"; //turn right
}
}
motorPort.write(message); //send message over serial port
});
});
控制檯輸出例如: 「左」 的按鈕,點擊
Server running...
Left: true //pressed (motor turning left)
Left: false //released (motor stops)
嘗試使用sudo使用sudo – Adiii
@Adiii同樣的問題? – MatMis
哪個操作系統您正在使用運行 – Adiii