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