Java 使用jamod api从modbus寄存器检索浮点值
我正在尝试使用Jamod从Modbus寄存器检索数据。我需要IEEE浮点格式的数据。我尝试了以下代码:Java 使用jamod api从modbus寄存器检索浮点值,java,modbus,Java,Modbus,我正在尝试使用Jamod从Modbus寄存器检索数据。我需要IEEE浮点格式的数据。我尝试了以下代码: private float getData (String address, int count) { float sum = 0.0f; request = new ReadMultipleRegistersRequest(Integer.parseInt(address), count); response = new ReadMulti
private float getData (String address, int count) {
float sum = 0.0f;
request = new ReadMultipleRegistersRequest(Integer.parseInt(address), count);
response = new ReadMultipleRegistersResponse();
request.setUnitID(1);
response.setUnitID(1);
request.setHeadless();
try {
response = (ReadMultipleRegistersResponse) execute(connection, holdingRequest);
for ( int i=0; i<registerCount; i++) {
sum = sum + response.getRegisterValue(i);
}
System.out.println("Sum: " + sum);
} catch (Exception e) {
e.printStackTrace();
}
return sum;
}
private ModbusResponse execute(SerialConnection connection, ModbusRequest request) {
try {
transaction = new ModbusSerialTransaction(connection);
transaction.setRequest(request);
transaction.execute();
return transaction.getResponse();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private float getData(字符串地址,整数计数){
浮动总和=0.0f;
request=new ReadMultipleRegistersRequest(Integer.parseInt(地址),count);
response=新的ReadMultipleRegistersResponse();
请求。setUnitID(1);
答复.setUnitID(1);
request.setHeadless();
试一试{
响应=(ReadMultipleRegistersResponse)执行(连接、保持请求);
对于(inti=0;i只需使用适当的数据类型来检索值,因为寄存器大小为16位,所以应该使用16位来存储它
在您的情况下,请使用以下代码:
try {
response = (ReadMultipleRegistersResponse) execute(connection, holdingRequest);
for ( int i=0; i<registerCount; i++) {
sum = sum + (short) response.getRegisterValue(i);
}
System.out.println("Sum: " + sum);
} catch (Exception e) {
e.printStackTrace();
}
试试{
响应=(ReadMultipleRegistersResponse)执行(连接、保持请求);
对于(int i=0;i