java - 如何从 Modbus 读取长(交换)值?

标签 java modbus

我需要从 Modbus 寄存器读取长​​(交换)值。

enter image description here

从上图中,我想读取寄存器 42002,其值为 78146789。这是长(交换)格式。十进制格式如下所示:

enter image description here

我正在使用 Java Shorts 数组来读取此内容。我正确地得到了 1192,27877。现在我需要将这些值转换为正确的值,在本例中为 78146789。这个怎么做?长(交换)在这里如何表示?

最佳答案

您可以使用 ByteBuffer 将短整型转换为长整型。但你必须添加前导 0

public static void main(String[] args) {
    short x = 1192;
    short y = 27877;
    ByteBuffer bb = ByteBuffer.allocate(8);
    bb.clear();
    bb.putShort((short) 0);
    bb.putShort((short) 0);
    bb.putShort(x);
    bb.putShort(y);
    bb.flip();
    System.out.println("" + bb.getLong());
}

关于java - 如何从 Modbus 读取长(交换)值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48599148/

相关文章:

Java 日历总是显示同一时间

java - libgdx 的 NullPointerException

java - 二进制转字符矩阵帮助

c - Arduino的MODBUS协议(protocol)

python - Pymodbus TCP `read_holding_registers` 返回陈旧/旧数据

java - 使用旋转的奇怪运动

java - JFileChooser 不允许选择目录

在 C 中编译包含 libmodbus 的程序

python - Python 中的 ModbusTCP 服务器/从站实现 (pymodbus)

c - PIC 微 Controller 的 Modbus 功能代码 1 和 crc 检查