Java 使用jamod api从modbus寄存器检索浮点值

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

我正在尝试使用Jamod从Modbus寄存器检索数据。我需要IEEE浮点格式的数据。我尝试了以下代码:

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