node.js - 通过 RTU 充当 modbus 从站 - 通信问题
问题描述
我正在使用以下代码来模拟 modbus 从设备:
const modbus = require('jsmodbus')
const SerialPort = require('serialport')
const options = {
baudRate: 115200
}
const socket = new SerialPort("COM4", options)
const server = new modbus.server.RTU(socket)
server.on('connect', function (client) {
console.log("in connect")
console.log(client);
});
server.on('connection', function (client) {
console.log("in connection")
console.log(client);
});
server.on('readHoldingRegisters', function (adr, len) {
console.log("in readHoldingRegisters")
console.log("adr: " + adr);
console.log("len: " + len);
});
上面的代码确实模拟了一个设备。当我运行这段代码时,我设置的主设备可以看到一个从设备。问题是我似乎无法让服务器功能到达它们的console.log
部分。
我有两个理论。
首先,我的从设备使用jsmodbus库模拟服务器,我的主设备使用modbus-serial进行通信。这会导致问题吗?
我的第二个理论是,我上面的代码是一次性运行的,不会环顾四周或保持开放以查看未来的通信。我将如何解决这个问题?
我也对新理论持开放态度。我的目标最终是通过命令将 modbus 数据传回主控server.on
。
编辑
如果我直接读取串口上的数据,我肯定会有数据进来:
socket.on('readable', function () {
console.log('Data:', socket.read()) //prints incoming buffer data
});
我仍然没有通过服务器命令获取数据。
解决方案
推荐阅读
- python - discord.py 如何再次从用户那里获取消息?
- quickbooks - 用于多租户数据库的 QBWebConnector
- javascript - 无法从 Docker 容器访问 Adonis
- typescript - 尝试键入嵌套对象时,类型不能用于索引类型
- c# - 互操作 Outlook - 如何将位图添加到邮件正文/附件中
- javascript - 如何在反应中将文本从 UI 复制到剪贴板?
- node.js - Azure Function JS:从 blob 获取图像并转换为 base64
- spring - 使用 postgresql 日期范围的 JPA 查询
- java - 如何在单元测试期间忽略一些 JSON 和对象属性?
- ruby - 我想用 ruby 语言对 GoogleSpreadsheet 工作表进行排序