node.js - 如何使用 NodeJS 解码来自 modbus 的有效负载?
问题描述
我有一个支持 rs485 的施耐德功率计。我使用 python 和 pymodbus 读取寄存器并从中解码有效负载(成功)。但是现在我想用 NodeJS 来做这个,我可以得到原始数据但我不知道如何解码它,我尝试了一些方法但结果错误!
这是我的python代码:
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
from pymodbus.constants import Endian
from pymodbus.payload import BinaryPayloadDecoder
def validator(instance):
if not instance.isError():
'''.isError() implemented in pymodbus 1.4.0 and above.'''
decoder = BinaryPayloadDecoder.fromRegisters(
instance.registers,
byteorder=Endian.Big, wordorder=Endian.Little
)
return float(decoder.decode_32bit_float())
else:
# Error handling.
return None
validator([5658, 17242]) # Result is 218.1
当我使用 NodeJS 时,它返回缓冲区,我尝试使用以下代码进行解码:
let buf = Buffer.from([0xd6, 0xd4, 0x42, 0x47]);
payload = buf.readFloatBE(0); // It return other float number not 218.1
大家可以帮帮我吗!谢谢 !
解决方案
推荐阅读
- apache-felix - 在 Felix OSGI 中使用 Java 创建 JAAS 配置
- php - Laravel 从一个表单中插入多条记录
- snakemake - 是否可以将规则动态添加到“localrules:”?
- python-3.x - 所以我正在学习 Python 3.x,这本书想要使用一个循环来打印一个列表。但
- javascript - 从 MetaWeatherAPI 获取数据
- node.js - 在来自 JSON 文件的同一查询中在 Neo4j 中创建节点和关系
- node.js - 如何检查成员是否提到了特定用户?
- android - NullPointerException:尝试在 Android Studio 上调用虚拟方法
- r - add_row 将因子/数值列转换为 char;不能添加有序因子
- javascript - 如何在reduce函数的帮助下分解对象并使其成为以下结构