nodejs 获取串口数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs 获取串口数据相关的知识,希望对你有一定的参考价值。

参考技术A 由于项目要求,项目为(B/S)架构 ,需要在页面上读取串口数据,于是就需要nodejs了

使用 nodejs 的一个插件 :serialport

现在先做个测试demo

1、先建立测试文件夹 

2、在文件夹中安装serialport ,在文件夹下的 cmd 中输入

3、可能会出现 一个警告可用忽略

4、安装后 编写读取串口 js 文件 testport.js

5、运行 js 在文件夹下 cmd 中输入

执行成功:

可能的问题:

问题一: Flie not found

这个是电脑上没有安装串口驱动,或者虚拟串口 

可用 虚拟串口程序

建立测试串口

问题二:Port is opening

需要加入 串口属性 autoOpen:false

NodeJS串口值读取问题

我是Node.JS和Arduino的新手。我有一个Arduino设置和几个传感器。我正在用Arduino读取温度和湿度值。我的串口监视器输出如下:

Humiditiy (%): 44.00
Temperature (Celcius): 26.00
Temperature (Kelvin): 299.00
Temperature (Fahrenheit): 58.00
Gas Value: 341

Humiditiy (%): 44.00
Temperature (Celcius): 26.00
Temperature (Kelvin): 299.00
Temperature (Fahrenheit): 58.00
Gas Value: 341

我想要三件事:

  1. 使用NodeJS并拉动串行监视器输出。
  2. 使用MongoDB存储值
  3. 将值发送到我创建的网站。

我尝试使用此NodeJS文件从串行监视器中提取值,并将输出放到控制台。

// Setup basic express server
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);

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

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

但是终端的输出很奇怪,但这是我得到的最佳输出。

Receiving dataty (%)
Receiving data: 44.00
Temperature (Celcius): 26.00
Temperature 
Receiving data(Kelvin): 299.00
Temperature (Fahrenheit): 58.00
Receiving data

Receiving dataz
Receiving dataas Value: 380

现在我正在研究如何将Mongo与串口一起使用。任何帮助将不胜感激。

答案

我找到了问题的答案。

上面发布的程序的实现方式,serialport将尽可能快地发送“数据”事件。在触发“数据”事件之前,它不会等待接收完整的文本行,这是我认为您期望的。如果Arduino草图以115200波特率尽快输出信息,那么Node.js程序在尝试开始读取时会遇到困难。也许这就是问题所在。 Node.js程序和Arduino应该协调他们的沟通。

串行端口中有一个逐行概念的文本读取,称为解析器。这也解决了我的问题。

var serialPort = new SerialPort("/dev/ttyACM0", {
    autoOpen: false,
    parser: SerialPort.parsers.readline('
'),
    baudrate:115200
}); 

改变这样的代码是有效的,因为现在它正在尝试逐行阅读。

以上是关于nodejs 获取串口数据的主要内容,如果未能解决你的问题,请参考以下文章

怎样获取串口地址

c 获取串口号 c 自动获取串口号

ios获取蓝牙串口数据

vs2022如何获取串口号

c#如何获取串口的句柄?

获取串口数据的JS源代码,一个小程序就行