|
@@ -81,8 +81,7 @@ public class ModbusTask {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public void gainModbusData(){
|
|
|
-
|
|
|
+ public void gainModbusData() {
|
|
|
try {
|
|
|
/**
|
|
|
* 根据sql查询所有总集合
|
|
@@ -113,7 +112,53 @@ public class ModbusTask {
|
|
|
*/
|
|
|
List<DmModbusData> dmModbusData = group.getDmModbusData();
|
|
|
if (!dmModbusData.isEmpty()){
|
|
|
+ //已经确认 空气质量统一用3X(Input Register) 数据类型为short
|
|
|
+ dmModbusData.forEach(data->{
|
|
|
+ switch (data.getSoftwareRegisterType()){
|
|
|
+ case "3X(Input Register)":
|
|
|
+ log.info("调用读取InputRegisters模拟量数据");
|
|
|
+ try {
|
|
|
+ Number number = readInputRegisters(Integer.valueOf(data.getSoftwareRegisterAddress()), 1, 1);
|
|
|
+
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ log.error("调用读取InputRegisters模拟量数据,modbus读取数据失败,失败原因:{}",e.getMessage());
|
|
|
+ } catch (ExecutionException e) {
|
|
|
+ log.error("调用读取InputRegisters模拟量数据,modbus读取数据失败,失败原因:{}",e.getMessage());
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "4X(Holding Register)":
|
|
|
+ log.info("调用读取HoldingRegister数据方法");
|
|
|
+ try {
|
|
|
+ Number number = readHoldingRegisters(Integer.valueOf(data.getSoftwareRegisterAddress()), 1, 1);
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ log.error("调用读取HoldingRegister数据方法,modbus读取数据失败,失败原因:{}",e.getMessage());
|
|
|
+ } catch (ExecutionException e) {
|
|
|
+ log.error("调用读取HoldingRegister数据方法,modbus读取数据失败,失败原因:{}",e.getMessage());
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "1X(Input Status)":
|
|
|
+ log.info("调用读取readDiscreteInputs开关量方法");
|
|
|
+ try {
|
|
|
+ Boolean aBoolean = readDiscreteInputs(Integer.valueOf(data.getSoftwareRegisterAddress()), 1, 1);
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ log.error("调用读取HoldingRegister数据方法,modbus读取数据失败,失败原因:{}",e.getMessage());
|
|
|
+ } catch (ExecutionException e) {
|
|
|
+ log.error("调用读取HoldingRegister数据方法,modbus读取数据失败,失败原因:{}",e.getMessage());
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "0X(Coil Status)":
|
|
|
+ log.info("调用读取Coils开关量,{readCoils}方法");
|
|
|
+ try {
|
|
|
+ Boolean aBoolean = readCoils(Integer.valueOf(data.getSoftwareRegisterAddress()), 1, 1);
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } catch (ExecutionException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
+ });
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -225,7 +270,7 @@ public class ModbusTask {
|
|
|
ReadHoldingRegistersResponse readHoldingRegistersResponse = future.get();// 工具类做的同步返回.实际使用推荐结合业务进行异步处理
|
|
|
if (readHoldingRegistersResponse != null) {
|
|
|
ByteBuf buf = readHoldingRegistersResponse.getRegisters();
|
|
|
- result = buf.readFloat();
|
|
|
+ result = buf.readShort();
|
|
|
ReferenceCountUtil.release(readHoldingRegistersResponse);
|
|
|
}
|
|
|
return result;
|
|
@@ -254,7 +299,8 @@ public class ModbusTask {
|
|
|
ReadInputRegistersResponse readInputRegistersResponse = future.get();// 工具类做的同步返回.实际使用推荐结合业务进行异步处理
|
|
|
if (readInputRegistersResponse != null) {
|
|
|
ByteBuf buf = readInputRegistersResponse.getRegisters();
|
|
|
- result = buf.readDouble();
|
|
|
+
|
|
|
+ result = buf.readShort();
|
|
|
ReferenceCountUtil.release(readInputRegistersResponse);
|
|
|
}
|
|
|
return result;
|