将数据从 SerialPort 发送到 socket.io
Send data from SerialPort to socket.io
我正在为 socket.io、express 和 node.js 苦苦挣扎。
我将数据从 Arduino 发送到我的 cmd。这是通过串行端口库完成的。但现在我希望这些数据显示在我的网络浏览器上。我正在为此使用 express 库。我有 index.js
这里是与 arduino 和浏览器的连接。还有一个 index.html
我有这个代码:
代码来自 index.js(node.js 服务器):
var express = require('express'),
app = express(),
server = require('http').Server(app),
io = require('socket.io')(server),
port = 8888;
//Server start
server.listen(port, () => console.log('on port' + port))
//user server
app.use(express.static(__dirname + '/public'));
io.on('connection', onConnection);
var connectedSocket = null;
function onConnection(socket){
connectedSocket = socket;
}
//Arduino to CMD
const SerialPort = require('serialport');
const Readline = SerialPort.parsers.Readline;
const usbport = new SerialPort('COM4');
const parser = usbport.pipe(new Readline());
parser.on('data', console.log);
从串行端口 (Arduino) 接收到的数据必须显示在 index.html(网络浏览器)中。我已经尝试过一些但它不起作用。它必须打印在html代码中的<p></p>
中。
index.html
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="/socket.io/socket.io.js"></script>
</head>
<body>
<div id="text">
<p></p>
</div>
<script>
var text = document.getElementById('text');
var socket = io.connect('http://localhost:8888');
socket.on('data', function(message) {
text.innerHTML = message.data;
});
</script>
</body>
</html>
而不是
parser.on('data', console.log);
试试这个:
parser.on('data', function (data) {
io.emit('data', { data: data });
});
这应该将解析后的数据从 SerialPort 发送到套接字,最终应该在网站的客户端。
我正在为 socket.io、express 和 node.js 苦苦挣扎。
我将数据从 Arduino 发送到我的 cmd。这是通过串行端口库完成的。但现在我希望这些数据显示在我的网络浏览器上。我正在为此使用 express 库。我有 index.js
这里是与 arduino 和浏览器的连接。还有一个 index.html
我有这个代码:
代码来自 index.js(node.js 服务器):
var express = require('express'),
app = express(),
server = require('http').Server(app),
io = require('socket.io')(server),
port = 8888;
//Server start
server.listen(port, () => console.log('on port' + port))
//user server
app.use(express.static(__dirname + '/public'));
io.on('connection', onConnection);
var connectedSocket = null;
function onConnection(socket){
connectedSocket = socket;
}
//Arduino to CMD
const SerialPort = require('serialport');
const Readline = SerialPort.parsers.Readline;
const usbport = new SerialPort('COM4');
const parser = usbport.pipe(new Readline());
parser.on('data', console.log);
从串行端口 (Arduino) 接收到的数据必须显示在 index.html(网络浏览器)中。我已经尝试过一些但它不起作用。它必须打印在html代码中的<p></p>
中。
index.html
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="/socket.io/socket.io.js"></script>
</head>
<body>
<div id="text">
<p></p>
</div>
<script>
var text = document.getElementById('text');
var socket = io.connect('http://localhost:8888');
socket.on('data', function(message) {
text.innerHTML = message.data;
});
</script>
</body>
</html>
而不是
parser.on('data', console.log);
试试这个:
parser.on('data', function (data) {
io.emit('data', { data: data });
});
这应该将解析后的数据从 SerialPort 发送到套接字,最终应该在网站的客户端。