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 上的节点串行端口的主要内容,如果未能解决你的问题,请参考以下文章

Linux 上的低延迟串行通信

Windows Server 2008 上的串行端口问题

为啥我不能从 Android 上的串行端口打开/写入?

Linux:在连接的 USB 串行加密狗上启动守护程序

串行端口上的十六进制转换错误

Mac 上的 RxTx - 串行端口已在使用中