|
@@ -126,8 +126,10 @@ public class ModbusTask {
|
|
|
// DmEnvHistoryData dmEnvHistoryData = new DmEnvHistoryData();
|
|
|
// Set<DmEnvHistoryData> dmEnvHistoryDataSet = new HashSet<>();
|
|
|
//已经确认 空气质量统一用3X(Input Register) 数据类型为short
|
|
|
+
|
|
|
dmModbusData.forEach(data->{
|
|
|
- switch (data.getSoftwareRegisterType()){
|
|
|
+ try {
|
|
|
+ switch (data.getSoftwareRegisterType()){
|
|
|
// case "3X(Input Register)":
|
|
|
// log.info("调用读取InputRegisters模拟量数据");
|
|
|
// try {
|
|
@@ -169,49 +171,48 @@ public class ModbusTask {
|
|
|
// e.printStackTrace();
|
|
|
// }
|
|
|
// break;
|
|
|
- default:
|
|
|
- //默认使用 3X(Input Register)
|
|
|
- log.info("调用读取InputRegisters模拟量数据");
|
|
|
- try {
|
|
|
- // 读取数据 数据类型为 float Integer.valueOf(data.getSoftwareRegisterAddress())
|
|
|
- Number number = readInputRegisters(Integer.valueOf(data.getSoftwareRegisterAddress()), 4, modbusSalveId);
|
|
|
- //获取点名 例如 1F_CO2
|
|
|
- String callTheRoll = data.getCallTheRoll();
|
|
|
- // 获取楼层id
|
|
|
- String F = StringUtils.substringBefore(callTheRoll, "F");
|
|
|
- // 获取检测的数据名称
|
|
|
- String dataName = StringUtils.substringAfterLast(callTheRoll, "_");
|
|
|
- switch (dataName){
|
|
|
- case "CHO":
|
|
|
- dmEnvHistoryModbusData.setCho(number.toString());
|
|
|
- break;
|
|
|
- case "CO2":
|
|
|
- dmEnvHistoryModbusData.setCo2(number.toString());
|
|
|
- break;
|
|
|
- case "H":
|
|
|
- dmEnvHistoryModbusData.setH(number.toString());
|
|
|
- break;
|
|
|
- case "PM10":
|
|
|
- dmEnvHistoryModbusData.setPm10(number.toString());
|
|
|
- break;
|
|
|
- case "T":
|
|
|
- dmEnvHistoryModbusData.setT(number.toString());
|
|
|
- break;
|
|
|
- case "VOC":
|
|
|
- dmEnvHistoryModbusData.setVoc(number.toString());
|
|
|
- break;
|
|
|
- }
|
|
|
- //设置关联id
|
|
|
- dmEnvHistoryModbusData.setDataId(Long.valueOf(F));
|
|
|
-
|
|
|
- } catch (InterruptedException e) {
|
|
|
- log.error("调用读取InputRegisters模拟量数据,modbus读取数据失败,失败原因:{}",e.getMessage());
|
|
|
- return;
|
|
|
- } catch (ExecutionException e) {
|
|
|
- log.error("调用读取InputRegisters模拟量数据,modbus读取数据失败,失败原因:{}",e.getMessage());
|
|
|
- return;
|
|
|
- }
|
|
|
- break;
|
|
|
+ default:
|
|
|
+ //默认使用 3X(Input Register)
|
|
|
+ log.info("调用读取InputRegisters模拟量数据");
|
|
|
+ // 读取数据 数据类型为 float Integer.valueOf(data.getSoftwareRegisterAddress())
|
|
|
+ Number number = readInputRegisters(Integer.valueOf(data.getSoftwareRegisterAddress()), 4, modbusSalveId);
|
|
|
+ //获取点名 例如 1F_CO2
|
|
|
+ String callTheRoll = data.getCallTheRoll();
|
|
|
+ log.info("{}寄存器地址:{}",callTheRoll,data.getSoftwareRegisterAddress());
|
|
|
+ // 获取楼层id
|
|
|
+ String F = StringUtils.substringBefore(callTheRoll, "F");
|
|
|
+ // 获取检测的数据名称
|
|
|
+ String dataName = StringUtils.substringAfterLast(callTheRoll, "_");
|
|
|
+ switch (dataName){
|
|
|
+ case "CHO":
|
|
|
+ dmEnvHistoryModbusData.setCho(number.toString());
|
|
|
+ break;
|
|
|
+ case "CO2":
|
|
|
+ dmEnvHistoryModbusData.setCo2(number.toString());
|
|
|
+ break;
|
|
|
+ case "H":
|
|
|
+ dmEnvHistoryModbusData.setH(number.toString());
|
|
|
+ break;
|
|
|
+ case "PM10":
|
|
|
+ dmEnvHistoryModbusData.setPm10(number.toString());
|
|
|
+ break;
|
|
|
+ case "T":
|
|
|
+ dmEnvHistoryModbusData.setT(number.toString());
|
|
|
+ break;
|
|
|
+ case "VOC":
|
|
|
+ dmEnvHistoryModbusData.setVoc(number.toString());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ //设置关联id
|
|
|
+ dmEnvHistoryModbusData.setDataId(Long.valueOf(F));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }catch (InterruptedException e) {
|
|
|
+ log.error("调用读取InputRegisters模拟量数据,modbus读取数据失败,失败原因:{}",e.getMessage());
|
|
|
+ return;
|
|
|
+ } catch (ExecutionException e) {
|
|
|
+ log.error("调用读取InputRegisters模拟量数据,modbus读取数据失败,失败原因:{}",e.getMessage());
|
|
|
+ return;
|
|
|
}
|
|
|
});
|
|
|
dmEnvHistoryModbusDataService.create(dmEnvHistoryModbusData);
|