gpt4 book ai didi

node.js - Arduino 串口和 socket

转载 作者:太空宇宙 更新时间:2023-11-04 01:04:28 25 4
gpt4 key购买 nike

我正在尝试使用 Node.js 和 Socket.io 以及我的代码将串行数据发送到 Arduino。

而html页面只有一个按钮。它的工作 Node 和html端。但这不是发送串行数据。

var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var port = process.env.PORT || 3000;


server.listen(port, function () {
// console.log('Server listening at port %d', port);
});

// Routing

app.use(express.static(__dirname + '/public'));

var SerialPort = require("serialport").SerialPort
var serialPort = new SerialPort("/dev/ttyACM3", {
baudrate:9600
}, false); // this is the openImmediately flag [default is true]



io.on('connection', function (socket) {

socket.on('my other event', function (data) {
console.log(data);

serialPort.open(function () {
console.log('open');
serialPort.on('data', function (data) {
console.log('data received: ' + data);
});

serialPort.write(data, function (err, results) {
console.log('err ' + err);
console.log('results ' + results);
});
});

});
});

app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});

最佳答案

向 Arduino 发送串行消息并不像简单地传递一个字符串那么简单。不幸的是,您必须逐个字符发送字符串,Arduino 将接收该字符串并将其连接回字符串。发送最后一个字符后,您需要发送最后一个换行符 (/n),这是 Arduino 停止连接并评估消息的信号。

这是您需要在 Node.js 服务器中执行的操作:

// Socket.IO message from the browser
socket.on('serialEvent', function (data) {

// The message received as a String
console.log(data);

// Sending String character by character
for(var i=0; i<data.length; i++){
myPort.write(new Buffer(data[i], 'ascii'), function(err, results) {
// console.log('Error: ' + err);
// console.log('Results ' + results);
});
}

// Sending the terminate character
myPort.write(new Buffer('\n', 'ascii'), function(err, results) {
// console.log('err ' + err);
// console.log('results ' + results);
});
});

这是接收此信息的 Arduino 代码:

String inData = "";

void loop(){
while (Serial.available() > 0) {
char received = Serial.read();
inData.concat(received);

// Process message when new line character is received
if (received == '\n') {
// Message is ready in inDate
}
}
}

关于node.js - Arduino 串口和 socket ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24439666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com