Linux CentOS 6 上的节点串行端口
Posted
技术标签:
【中文标题】Linux CentOS 6 上的节点串行端口【英文标题】:Node SerialPort on Linux CentOS 6 【发布时间】:2017-06-16 15:32:15 【问题描述】:我是节点 js 的新手。我使用 node、express、socket 和 serialport 创建了一个应用程序。我有一个连接到串行端口(COM2)的称重秤。在 Windows(本地主机)上它工作得很好。但是当我将它部署在我的 Linux CentOS 6 服务器上时,它没有读取任何串行端口。
package.json
"name": "socket",
"version": "0.0.1",
"description": "wieghing machine serial port socket app",
"dependencies":
"express": "^4.10.2",
"socket.io": "1.2.0",
"bindings": "1.2.1",
"commander": "^2.9.0",
"debug": "^2.4.5",
"nan": "^2.4.0",
"node-pre-gyp": "^0.6.32"
,
"devDependencies":
"serialport": "^4.0.7"
app.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var SerialPort = require('serialport');
app.get('/', function(req, res)
res.sendFile(__dirname + '/index.html');
);
io.on('connection', function(socket)
socket.on('register', function(msg)
io.emit('register', msg);
);
);
http.listen(8081, function()
console.log('listening on *:8081');
);
var port = new SerialPort("COM2",
baudrate: 9600
);
port.on('data', function (data)
io.emit('WeightMachine', data.toString());
);
SerialPort.list(function (err, ports)
ports.forEach(function(port)
console.log(port.comName);
console.log(port.pnpId);
console.log(port.manufacturer);
);
);
请不要将我的问题标记为否定我真的是节点 js 的新手。 提前致谢。
【问题讨论】:
把 http.listen(8081) 改成 http.listen(8081."0.0.0.0",fun...) 我认为这不是 NodeJS 的问题。您可以使用原生 CentOS 工具从该 COM 端口读取数据吗? 显示错误 http.listen(8081."0.0.0.0", function() unexpected string COM2 不是 linux 上的有效名称,应该类似于 '/dev/ttyUSB0' @JohnSmith 我刚刚在寡妇身上进行了测试,效果很好。我不知道为什么它不能在 linux CentOS 上运行 【参考方案1】:默认情况下,当未提供第二个参数时,您的代码在 localhost 上运行,但在服务器上运行时,需要将其更改为。还要确保在服务器上启用了 8081 端口
http.listen(8081,"0.0.0.0", function()
console.log('listening on *:8081');
);
【讨论】:
以上是关于Linux CentOS 6 上的节点串行端口的主要内容,如果未能解决你的问题,请参考以下文章