gpt4 book ai didi

java - 将 ASCII 值写入 RS485 等串行通信设备的寄存器

转载 作者:行者123 更新时间:2023-12-01 17:11:21 25 4
gpt4 key购买 nike

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

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

用于在单一寄存器上写入

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

用于在多个寄存器上写入

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

提出一些方法来解决我的问题。

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

最佳答案

认为最简单的方法是使用 ByteBuffer来管理这个字节操作。比如,

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);
}

关于java - 将 ASCII 值写入 RS485 等串行通信设备的寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61427732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com