diff --git a/user-service/src/main/java/com/mh/user/constants/Constant.java b/user-service/src/main/java/com/mh/user/constants/Constant.java index 2a71699..0a82029 100644 --- a/user-service/src/main/java/com/mh/user/constants/Constant.java +++ b/user-service/src/main/java/com/mh/user/constants/Constant.java @@ -15,4 +15,13 @@ public class Constant { public static volatile boolean WEB_FLAG = false; // 判断是否有前端指令下发 + public static final String FAIL = "fail"; + + public static final String SUCCESS = "success"; + + public static final String READ = "0"; + + public static final String WRITE = "1"; + + } diff --git a/user-service/src/main/java/com/mh/user/controller/DeviceOperateController.java b/user-service/src/main/java/com/mh/user/controller/DeviceOperateController.java new file mode 100644 index 0000000..bbb0a6c --- /dev/null +++ b/user-service/src/main/java/com/mh/user/controller/DeviceOperateController.java @@ -0,0 +1,93 @@ +package com.mh.user.controller; + +import com.alibaba.fastjson2.JSONObject; +import com.mh.common.http.HttpResult; +import com.mh.common.utils.StringUtils; +import com.mh.user.annotation.SysLogger; +import com.mh.user.constants.Constant; +import com.mh.user.entity.ControlSetEntity; +import com.mh.user.entity.DeviceCodeParamEntity; +import com.mh.user.entity.DeviceInstallEntity; +import com.mh.user.entity.PumpSetEntity; +import com.mh.user.model.DeviceModel; +import com.mh.user.model.SerialPortModel; +import com.mh.user.serialport.SerialPortSingle2; +import com.mh.user.service.*; +import com.mh.user.utils.ExchangeStringUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +@Slf4j +@RestController +@RequestMapping("serial") +public class DeviceOperateController { + + @Autowired + DeviceInstallService deviceInstallService; + + @Autowired + PumpSetService pumpSetService; + + @Autowired + ControlSetService controlSetService; + + @Autowired + NowDataService nowDataService; + + @Autowired + private DeviceControlService deviceControlService; + + + //操作设备 + @SysLogger(title = "控制管理", optDesc = "设置设备参数值") + @PostMapping(value = "/operate") + public HttpResult operateDevice(@RequestBody List params) { + try { + Constant.WEB_FLAG = true; //单抄,暂时停止采集 + String returnStr = deviceControlService.readOrWriteDevice(params, Constant.WRITE); + if (!StringUtils.isBlank(returnStr) && "fail".equals(returnStr)) { + return HttpResult.error(500, "fail"); + } + Constant.WEB_FLAG = false; //单抄,恢复采集 + return HttpResult.ok(); + } catch (Exception e) { + log.error("前端发送控制异常==>", e); + Constant.WEB_FLAG = false; //单抄,恢复采集 + return HttpResult.error(500, "fail"); + } finally { + Constant.WEB_FLAG = false; + } + } + + //读数据 + @SysLogger(title = "控制管理", optDesc = "读设备数据") + @PostMapping(value = "/read") + public HttpResult readData(@RequestBody List params) { + try { + Constant.WEB_FLAG = true; //单抄,暂时停止采集 + String rtData = deviceControlService.readOrWriteDevice(params, Constant.READ); + Constant.WEB_FLAG = false; //单抄,恢复采集 + if (ExchangeStringUtil.getJSONType(rtData)) { + Map map = JSONObject.parseObject(rtData); + return HttpResult.ok("success", map); + } else { + if (rtData.equals("fail")) { + return HttpResult.error(500, "fail"); + } else { + return HttpResult.ok(rtData, rtData); + } + } + } catch (Exception e) { + Constant.WEB_FLAG = false; //单抄,恢复采集 + return HttpResult.error(500, "fail"); + } finally { + Constant.WEB_FLAG = false; //单抄,恢复采集 + } + } + +} diff --git a/user-service/src/main/java/com/mh/user/controller/SerialPortController.java b/user-service/src/main/java/com/mh/user/controller/SerialPortController.java index 7ad47be..cea853a 100644 --- a/user-service/src/main/java/com/mh/user/controller/SerialPortController.java +++ b/user-service/src/main/java/com/mh/user/controller/SerialPortController.java @@ -46,7 +46,7 @@ public class SerialPortController { //操作设备 @SysLogger(title = "控制管理", optDesc = "设置设备参数值") - @PostMapping(value = "/operate") + @PostMapping(value = "/operate/old") public HttpResult operateDevice(@RequestBody List params) { try { SerialPortSingle2 serialPortSingle = new SerialPortSingle2(); //发送接收类 @@ -204,7 +204,7 @@ public class SerialPortController { //读数据 @SysLogger(title = "控制管理", optDesc = "读设备数据") - @PostMapping(value = "/read") + @PostMapping(value = "/read/old") public HttpResult readData(@RequestBody List params) { try { SerialPortSingle2 serialPortSingle = new SerialPortSingle2(); diff --git a/user-service/src/main/java/com/mh/user/entity/DeviceCodeParamEntity.java b/user-service/src/main/java/com/mh/user/entity/DeviceCodeParamEntity.java index 48d340c..0ed4ed7 100644 --- a/user-service/src/main/java/com/mh/user/entity/DeviceCodeParamEntity.java +++ b/user-service/src/main/java/com/mh/user/entity/DeviceCodeParamEntity.java @@ -23,4 +23,6 @@ public class DeviceCodeParamEntity { private Integer isuse; + private String param; + } diff --git a/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle2.java b/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle2.java index 3b87334..df7426c 100644 --- a/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle2.java +++ b/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle2.java @@ -1,5 +1,6 @@ package com.mh.user.serialport; +import com.mh.common.utils.StringUtils; import com.mh.user.entity.DeviceCodeParamEntity; import com.mh.user.service.BuildingService; import com.mh.user.service.DeviceInstallService; @@ -11,8 +12,7 @@ import com.mh.user.utils.SpringBeanUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.context.ApplicationContext; -import java.nio.ByteBuffer; -import java.nio.charset.StandardCharsets; +import java.io.IOException; import purejavacomm.SerialPort; @@ -58,6 +58,7 @@ public class SerialPortSingle2 { } } } catch (Exception e) { + SerialTool.closePort(serialPort); log.info("单抄串口" + serialPort + "异常,没有数据返回!关闭串口", e); return "fail"; } @@ -101,13 +102,13 @@ public class SerialPortSingle2 { rtData = analysisReceiveOrder485.analysisPressureOrder4852(dataStr, registerAddr, brand, buildingId, buildingName); } else if ((dataStr.length() == 30) && deviceType.equals("状态检测")) {//五路状态读取,兼容旧版系统 analysisReceiveOrder485.analysisStateOrder485(dataStr, registerAddr, brand, buildingId, buildingName); - } else if (deviceType.equals("水位开关") && (registerAddr.equals("0018") || registerAddr.equals("0017"))) { + } else if (deviceType.equals("水位开关") && (StringUtils.isBlank(registerAddr) || (registerAddr.equals("0018") || registerAddr.equals("0017")))) { rtData = analysisReceiveOrder485.analysisRelayOrder4852(dataStr, registerAddr, brand, buildingId, buildingName); } else if (deviceType.equals("热泵")) { rtData = analysisReceiveOrder485.analysisPumpOrder4852(dataStr, registerAddr, brand, buildingId, buildingName); } else if (deviceType.equals("时控")) { rtData = analysisReceiveOrder485.analysisTimeSetOrder4852(dataStr, registerAddr, brand, buildingId, buildingName); - } else if (deviceType.equals("水位开关") && registerAddr.equals("0010")) { //热泵状态 + } else if (deviceType.equals("水位开关") && !StringUtils.isBlank(registerAddr) && registerAddr.equals("0010")) { //热泵状态 rtData = analysisReceiveOrder485.analysisPumpStateOrder2(dataStr, registerAddr, brand, buildingId, buildingName); } else if (deviceType.equals("温度变送器")) { rtData = analysisReceiveOrder485.analysisMulTempOrder4852(dataStr, registerAddr, brand, buildingId, buildingName); @@ -115,7 +116,7 @@ public class SerialPortSingle2 { rtData = analysisReceiveOrder485.analysisPumpStateOrder2(dataStr, registerAddr, brand, buildingId, buildingName); } } catch (Exception e) { - log.error(deviceCodeParamEntity.getDeviceType() + "单抄保存数据库失败!"); + log.error(deviceCodeParamEntity.getDeviceType() + "单抄保存数据库失败!", e); SerialTool.closePort(serialPort); return "fail"; } @@ -126,6 +127,14 @@ public class SerialPortSingle2 { return rtData; } catch (Exception e) { log.info("单抄串口" + serialPort + "异常,没有数据返回!关闭串口", e); + } finally { + try { + if (null != serialPort) { + SerialTool.closePort(serialPort); + } + } catch (IOException e) { + throw new RuntimeException(e); + } } return "fail"; } diff --git a/user-service/src/main/java/com/mh/user/service/DeviceControlService.java b/user-service/src/main/java/com/mh/user/service/DeviceControlService.java new file mode 100644 index 0000000..4bf4f6e --- /dev/null +++ b/user-service/src/main/java/com/mh/user/service/DeviceControlService.java @@ -0,0 +1,23 @@ +package com.mh.user.service; + +import com.mh.user.model.SerialPortModel; + +import java.util.List; + +/** + * @author LJF + * @version 1.0 + * @project CHWS + * @description 设备控制服务类 + * @date 2023-12-21 10:18:34 + */ +public interface DeviceControlService { + + /** + * 读写设备 + * @param params + * @return + */ + public String readOrWriteDevice(List params, String type); + +} diff --git a/user-service/src/main/java/com/mh/user/service/impl/DeviceControlServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/DeviceControlServiceImpl.java new file mode 100644 index 0000000..ea43584 --- /dev/null +++ b/user-service/src/main/java/com/mh/user/service/impl/DeviceControlServiceImpl.java @@ -0,0 +1,336 @@ +package com.mh.user.service.impl; + +import com.mh.common.http.HttpResult; +import com.mh.common.utils.StringUtils; +import com.mh.user.constants.Constant; +import com.mh.user.entity.ControlSetEntity; +import com.mh.user.entity.DeviceCodeParamEntity; +import com.mh.user.entity.DeviceInstallEntity; +import com.mh.user.entity.PumpSetEntity; +import com.mh.user.model.DeviceModel; +import com.mh.user.model.SerialPortModel; +import com.mh.user.serialport.SerialPortSingle2; +import com.mh.user.service.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.List; + +/** + * @author LJF + * @version 1.0 + * @project CHWS + * @description 设备控制服务类 + * @date 2023-12-21 10:21:11 + */ +@Slf4j +@Service +public class DeviceControlServiceImpl implements DeviceControlService { + + @Resource + private DeviceInstallService deviceInstallService; + + @Resource + private PumpSetService pumpSetService; + + @Resource + private NowDataService nowDataService; + + @Resource + private ControlSetService controlSetService; + + @Override + public String readOrWriteDevice(List params, String type) { + try { + SerialPortSingle2 serialPortSingle = new SerialPortSingle2(); + String rtData = ""; + for (SerialPortModel serialPortModel : params) { + + DeviceCodeParamEntity deviceCodeParam = new DeviceCodeParamEntity(); + + String deviceAddr = serialPortModel.getDeviceAddr(); + String deviceType = serialPortModel.getDeviceType(); + String buildingId = serialPortModel.getBuildingId(); + String param = serialPortModel.getParam(); + + if (StringUtils.isBlank(deviceAddr)) { + List list = deviceInstallService.selectDevices(buildingId, deviceType); + deviceAddr = list.get(0).getDeviceAddr(); + } + if (deviceAddr == null || deviceAddr.length() == 0) { + return "fail"; + } + + DeviceInstallEntity deviceInstallEntity = + deviceInstallService.selectDevice(deviceAddr, deviceType, buildingId); + + deviceCodeParam.setDeviceAddr(deviceAddr); + deviceCodeParam.setDeviceType(deviceType); + deviceCodeParam.setDataCom(deviceInstallEntity.getDataCom()); + deviceCodeParam.setBaudrate(deviceInstallEntity.getBaudRate()); + deviceCodeParam.setParity(deviceInstallEntity.getParity()); + deviceCodeParam.setBuildingId(buildingId); + + String brand = deviceInstallEntity.getBrand(); + deviceCodeParam.setBrand(brand); + + deviceCodeParam.setParam(param); + + ControlSetEntity controlData = new ControlSetEntity(); + controlData.setBuildingId(deviceInstallEntity.getBuildingId()); + + // 根据设备类型和参数执行相应的操作 + switch (deviceType) { + case "热泵": + rtData = handleHotPump(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle); + break; + case "时控": + rtData = handleTimeControl(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle); + break; + case "水位开关": + rtData = handleWaterLevelSwitch(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle); + break; + case "温度变送器": + rtData = handleTemperatureTransmitter(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle); + break; + case "压变": + rtData = handlePressureTransducer(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle); + break; + case "水表": + rtData = handleWaterMeter(serialPortModel, deviceCodeParam, controlData, controlData, rtData, type, serialPortSingle); + break; + case "电表": + rtData = handleElectricMeter(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle); + break; + default: + rtData = handleHotPump(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle); + break; + } + if (Constant.WRITE.equals(type)) { + rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 + } + } + return rtData; + } catch (Exception e) { + log.error("设备控制异常", e); + return Constant.FAIL; + } + } + + private String handleElectricMeter(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, ControlSetEntity controlData, String rtData, String type, SerialPortSingle2 serialPortSingle) { + rtData = serialPortSingle.serialPortSend(deviceCodeParam); + return rtData; + } + + private String handleWaterMeter(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, ControlSetEntity controlData, ControlSetEntity controlData1, String rtData, String type, SerialPortSingle2 serialPortSingle) { + rtData = serialPortSingle.serialPortSend(deviceCodeParam); + // 要添加校准值 + Double deviationValue = deviceInstallService.selectDeviceDeviation(deviceCodeParam.getDeviceAddr(),deviceCodeParam.getDeviceType(), deviceCodeParam.getBuildingId()); + if (null != deviationValue && !"fail".equals(rtData)) { + rtData = new BigDecimal(rtData).add(BigDecimal.valueOf(deviationValue)).toString(); + } + return rtData; + } + + private String handlePressureTransducer(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, ControlSetEntity controlData, String rtData, String type, SerialPortSingle2 serialPortSingle) { + deviceCodeParam.setFunCode("03"); //功能码读 + deviceCodeParam.setRegisterAddr("0004"); + rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 + return rtData; + } + + private String handleTemperatureTransmitter(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, ControlSetEntity controlData, String rtData, String type, SerialPortSingle2 serialPortSingle) { + deviceCodeParam.setFunCode("03"); //功能码读 + deviceCodeParam.setRegisterAddr("0028"); + rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 + return rtData; + } + + private String handleWaterLevelSwitch(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, ControlSetEntity controlData, String rtData, String type, SerialPortSingle2 serialPortSingle) throws InterruptedException { + if (Constant.WRITE.equals(type)) { + switch (deviceCodeParam.getBrand()) { + case "远向": + deviceCodeParam.setFunCode("06"); //功能码写数据 + if (!serialPortModel.getDataValue().equals("100%")) { + deviceCodeParam.setDataValue("100%"); +// serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 +// Thread.sleep(1000); + } + break; + case "顶威": + deviceCodeParam.setFunCode("0407"); //功能码写数据 + break; + default: + deviceCodeParam.setFunCode("12"); //功能码写数据 + if (!serialPortModel.getDataValue().equals("100%")) { + deviceCodeParam.setDataValue("100%"); +// serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 +// Thread.sleep(1000); + } + break; + } + deviceCodeParam.setDataValue(serialPortModel.getDataValue()); + nowDataService.upLevelSet(deviceCodeParam.getBuildingId(), serialPortModel.getDataValue());//更新实时状态表 + } else if (Constant.READ.equals(type)) { + //生成并发送指令 + if ("状态".equals(deviceCodeParam.getParam())) { + if ("远向".equals(deviceCodeParam.getBrand())) { + deviceCodeParam.setFunCode("03"); //功能码读 + deviceCodeParam.setRegisterAddr("0010"); + } + } else { + if (StringUtils.isBlank(deviceCodeParam.getBrand()) + || "中凯".equals(deviceCodeParam.getBrand())) {//品牌 + deviceCodeParam.setFunCode("17"); //功能码读 + deviceCodeParam.setRegisterAddr("0017"); + } else if ("远向".equals(deviceCodeParam.getBrand())) { + deviceCodeParam.setFunCode("03"); //功能码读 + deviceCodeParam.setRegisterAddr("0018"); + } else if ("顶威".equals(deviceCodeParam.getBrand())) { + deviceCodeParam.setFunCode("0102"); //功能码读 + deviceCodeParam.setRegisterAddr("0102"); + } + } + rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 + } + return rtData; + } + + private String handleTimeControl(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, ControlSetEntity controlData, String rtData, String type, SerialPortSingle2 serialPortSingle) { + String time = serialPortModel.getDataValue(); + if (Constant.READ.equals(type)) { + deviceCodeParam.setFunCode("03"); //功能码读数据 + if (deviceCodeParam.getParam().equals("L1")) { + deviceCodeParam.setRegisterAddr("0009"); //寄存器地址,L3路,L1(0009),L2(000D) + } else if (deviceCodeParam.getParam().equals("L2")) { + deviceCodeParam.setRegisterAddr("000D"); + } else { + deviceCodeParam.setRegisterAddr("0011"); + } + rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 + time = rtData; + } else { + deviceCodeParam.setFunCode("10"); //功能码写数据 + } + if (time.length() == 16) { + //时段1 HHmmHHmm + String statTime1 = time.substring(0, 2) + ":" + time.substring(2, 4); //HH:mm + String closeTime1 = time.substring(4, 6) + ":" + time.substring(6, 8); //HH:mm + //时段2 + String statTime2 = time.substring(8, 10) + ":" + time.substring(10, 12); + String closeTime2 = time.substring(12, 14) + ":" + time.substring(14, 16); + if ("L1".equals(deviceCodeParam.getParam())) { + deviceCodeParam.setRegisterAddr("0009"); //寄存器地址,L3路,L1(0009),L2(000D) + controlData.setUseStartTime1(statTime1); + controlData.setUseCloseTime1(closeTime1); + controlData.setUseStartTime2(statTime2); + controlData.setUseCloseTime2(closeTime2); + } else if ("L2".equals(deviceCodeParam.getParam())) { + deviceCodeParam.setRegisterAddr("000D"); + controlData.setUseStartTime3(statTime1); + controlData.setUseCloseTime3(closeTime1); + controlData.setUseStartTime4(statTime2); + controlData.setUseCloseTime4(closeTime2); + } else { + deviceCodeParam.setRegisterAddr("0011"); + controlData.setUseStartTime5(statTime1); + controlData.setUseCloseTime5(closeTime1); + controlData.setUseStartTime6(statTime2); + controlData.setUseCloseTime6(closeTime2); + } + } + controlSetService.saveControlSet(controlData); //保存设置内容 + return rtData; + } + + private String handleHotPump(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, ControlSetEntity controlData, String rtData, String type, SerialPortSingle2 serialPortSingle) { + //设置热泵实体对象 + PumpSetEntity pumpData = new PumpSetEntity(); + pumpData.setBuildingId(deviceCodeParam.getBuildingId()); + pumpData.setPumpId(deviceCodeParam.getDeviceAddr()); + if (StringUtils.isBlank(deviceCodeParam.getParam()) || deviceCodeParam.getParam().equals("温度设定")) { + //发送指令 + if (deviceCodeParam.getBrand().equals("美的")) { + deviceCodeParam.setRegisterAddr("0642"); //寄存器地址 + deviceCodeParam.setFunCode("10"); //功能码写数据 + } else { + deviceCodeParam.setRegisterAddr("0003"); //寄存器地址 + deviceCodeParam.setFunCode("06"); //功能码写数据 + } + //保存数据 + if (Constant.READ.equals(type)) { + rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 + if (!rtData.equals("fail")) { + pumpData.setTempSet(rtData); + pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库 + } + return rtData; + } + pumpData.setTempSet(serialPortModel.getDataValue()); + pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库 + + nowDataService.upTempSet2(deviceCodeParam.getBuildingId(), serialPortModel.getDataValue(), deviceCodeParam.getDeviceAddr());//更新实时状态表 + log.info("楼栋编号:" + deviceCodeParam.getBuildingId() + ",设定温度:" + serialPortModel.getDataValue() + ",热泵编号:" + deviceCodeParam.getDeviceAddr()); + } else if (deviceCodeParam.getParam().equals("时段1") || deviceCodeParam.getParam().equals("时段2")) { + if (deviceCodeParam.getBrand().equals("美的")) { + //发送指令 + if (Constant.READ.equals(type)) { + deviceCodeParam.setFunCode("03"); //功能码读数据 + } else { + deviceCodeParam.setFunCode("10"); //功能码写数据 + } + if ("时段1".equals(deviceCodeParam.getParam())) { + deviceCodeParam.setRegisterAddr("0656"); //寄存器地址 + } else { + deviceCodeParam.setRegisterAddr("065A"); //寄存器地址 + } + + if (Constant.READ.equals(type)) { + rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 + } else { + rtData = serialPortModel.getDataValue(); + } + if (!rtData.equals("fail")) { + if (rtData.length() == 8) { + String statTime = rtData.substring(0, 2) + ":" + rtData.substring(2, 4); + String closeTime = rtData.substring(4, 6) + ":" + rtData.substring(6, 8); + if ("时段1".equals(deviceCodeParam.getParam())) { + pumpData.setStartTime1(statTime); + pumpData.setCloseTime1(closeTime); + } else if ("时段2".equals(deviceCodeParam.getParam())) { + pumpData.setStartTime2(statTime); + pumpData.setCloseTime2(closeTime); + } + } + pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库 + } + return rtData; + } + } else if ("实际温度".equals(deviceCodeParam.getParam())) { + deviceCodeParam.setFunCode("03"); //功能码读数据 + if ("美的".equals(deviceCodeParam.getBrand())) { + deviceCodeParam.setRegisterAddr("0007"); //寄存器地址 + } else { + deviceCodeParam.setRegisterAddr("0064"); //寄存器地址 + } + rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 + if (!rtData.equals("fail")) { + pumpData.setWaterTemp(rtData); + pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库 + } + return rtData; + } else if ("运行状态".equals(deviceCodeParam.getParam())) { + deviceCodeParam.setFunCode("03"); //功能码读数据 + if ("美的".equals(deviceCodeParam.getBrand())) { + deviceCodeParam.setRegisterAddr("0641"); //寄存器地址 + } else { + deviceCodeParam.setRegisterAddr("0BBD"); //寄存器地址 + } + rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 + return rtData; + } + return rtData; + } +} diff --git a/user-service/src/main/java/com/mh/user/utils/GetReadOrder485.java b/user-service/src/main/java/com/mh/user/utils/GetReadOrder485.java index 55d15b0..1c65b54 100644 --- a/user-service/src/main/java/com/mh/user/utils/GetReadOrder485.java +++ b/user-service/src/main/java/com/mh/user/utils/GetReadOrder485.java @@ -309,6 +309,7 @@ public class GetReadOrder485 { // }else{ // log.info("生成水位开关采集指令>>>>" + str); // } + return str.toUpperCase(); }