首页 > 解决方案 > 如何使用 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

大家可以帮帮我吗!谢谢 !

标签: node.jsnode-redmodbus

解决方案


推荐阅读