javascript - 我可以使用 node.js 监控现有的串行端口通信吗?
问题描述
我正在寻找自动化我已经使用 Eltima 串行端口监视器的过程。我有一个带有专有软件的硬件,它向我显示它通过串行接收的数据,但本机不允许任何数据记录。我使用串口监视器来嗅探通信,然后过滤掉我需要的数据,然后处理文本文件输出,直到我得到我想要的。我的问题是关于 node-serialport 或 socket.io 或类似的,以便嗅探已经打开的端口?我知道我可以使用这些打开端口,但对于初学者来说,我更愿意在现有连接上搭载一些东西,并简单地浏览我需要的信息,而不深入研究提供的 Windows 应用程序如何与硬件对话的细节。
如果问题看起来很复杂,我深表歉意,但我只是希望指出已知可行的方向,而不是给出完整的解决方案。我没有太多时间花在这上面,也不想为了发现它根本不能做我想做的事情而学习一个框架。有人可以确认节点解决方案是否可以侦听已经活动的端口吗?
解决方案
当然你可以从串口读取流。我可以想象的一种方法是(在linux环境中,因为我觉得它更舒服):考虑到您可以将流打印为纯文本
cat /dev/ttyS0
您可以创建并调用一个 bash,您可以在其中读取您需要知道的 tty 正在建立的串行端口,然后您可以将 stdout 重定向到文件并执行一些 greps ...等等等等,之后您可以使用文件当您收到所需的值时,观察者会触发操作。
无论如何,它只是最快捷的方式之一(可能不是最好的)
关于使用 node.js 读取串行端口,互联网上有大量示例和库,例如:
https://www.npmjs.com/package/serialport
安装库:
npm install --save-dev serialport
在这样的事情之后(我没有尝试过),只需遵循一些文档:
var serialport = require("serialport");
var SerialPort = serialport.SerialPort;
/*need to know in which port is connected in case of windows i think
COM1*/
var serialPort = new SerialPort("/dev/ttyS0", {
baudrate: 9600,
parser: serialport.parsers.readline("\n")
});
serialPort.on("open", function () {
console.log('open');
serialPort.on('data', function(data) {
console.log(data);
});
});
希望我有所帮助
祝你好运!
推荐阅读
- python - Order_By SQLite 中 peewee 中的自定义日期
- r - 为基本箱线图 r 添加交互性
- python - 在 Python 的列表中使用 min 函数获取 AttributeError
- youtube-data-api - 访问 YouTube Data 3 API 的正确方法是什么?
- xamarin - 如何在 iOS 中使用没有故事板的 MvvmCross?
- mysql - mySQL 8 上的动态 SQL
- sql - 在同一分钟内过滤数据
- php - Laravel 8 使用未定义的常量 XXX - 假定为“XXX”(这将在 PHP 的未来版本中引发错误)
- javascript - 如何使用 html 表单提交 API 链接以获取 JSON 响应
- sentiment-analysis - Kaggle - Tweet Sentiment Extraction - 支持情绪的单词或短语的长度是多少