0

我正在创建一个 java 桌面应用程序。我想将数据写入设备的寄存器。根据我的项目文档,寄存器的大小是 16 位长。我正在使用 EasyModbusJava jar 将数据写入寄存器。到目前为止,我已经在设备的寄存器上写入了一些整数数据。现在我想在 16 个连续寄存器(每个寄存器 2 个字符)中写入 32 个字符的 ascii。但问题是在寄存器上写入的可用方法将 int 作为参数。如果传递的是 ascii 值的 short(int) 数组,那么它需要进行类型转换,这意味着它将不再获取 short 数据类型的大小。

两种方法可以写入寄存器地址。

用于写入单个寄存器

public void WriteMultipleRegisters(int startingAddress, int[] values){...}

用于写入多个寄存器

public void WriteMultipleRegisters(int startingAddress, int[] values){...}

建议一些方法来解决我的问题。

下面是我在项目中使用的 jar 文件文档的链接。 Jar 文件的文档。

4

1 回答 1

0

认为最简单的方法是使用 aByteBuffer来管理这个字节操作。就像是,

char[] arr = "Hello, World".toCharArray();
ByteBuffer bb = ByteBuffer.allocate(arr.length);
for (char ch : arr) {
    bb.put((byte) ch);
}
bb.rewind();
// You may need a call to ByteBuffer.order(ByteOrder) here.
for (int i = 0; i < arr.length / 2; i++) {
    int v = bb.getShort(); // Reads two bytes and converts to 16-bit short integer
    System.out.println(v);
}
于 2020-04-25T15:30:51.803 回答