我正在与socket.io,express和node.js斗争。
我将数据从Arduino发送到我的cmd。这是通过serialport库完成的。但现在我想在我的webbrowser上显示这些数据。我正在使用快递库。我有 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);
从serialport(Arduino)收到的数据必须显示在index.html(webbrowser)中。我已经尝试了一些东西,但它不起作用。它必须打印在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>
我希望它得到很好的解释。
答案 0 :(得分:0)
而不是
parser.on('data', console.log);
试试这个:
parser.on('data', function (data) {
io.emit('data', { data: data });
});
那应该将解析后的数据从SerialPort发送到套接字,这应该最终在网站的客户端。