|
|
|
|
@ -103,6 +103,7 @@ public class DeviceControlServiceImpl implements DeviceControlService {
|
|
|
|
|
break; |
|
|
|
|
case "时控": |
|
|
|
|
case "阿丽塔时控": |
|
|
|
|
case "蒙浩时控": |
|
|
|
|
rtData = handleTimeControl(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle); |
|
|
|
|
log.info("设备类型为时控==>{}", rtData); |
|
|
|
|
break; |
|
|
|
|
@ -351,6 +352,8 @@ public class DeviceControlServiceImpl implements DeviceControlService {
|
|
|
|
|
ControlSetEntity controlData, String rtData, String type, SerialPortSingle2 serialPortSingle) { |
|
|
|
|
if ("阿丽塔".equals(deviceCodeParam.getBrand())) { |
|
|
|
|
rtData = handleAlitaTimeControl(serialPortModel, deviceCodeParam, type, serialPortSingle); |
|
|
|
|
} else if ("蒙浩".equals(deviceCodeParam.getBrand())) { |
|
|
|
|
rtData = handleMHTimeControl(serialPortModel, deviceCodeParam, type, serialPortSingle); |
|
|
|
|
} else { |
|
|
|
|
rtData = handleDefaultTimeControl(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle); |
|
|
|
|
} |
|
|
|
|
@ -358,6 +361,157 @@ public class DeviceControlServiceImpl implements DeviceControlService {
|
|
|
|
|
return rtData; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private String handleMHTimeControl(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, String type, SerialPortSingle2 serialPortSingle) { |
|
|
|
|
// 设置值前面两位是场景选择,_隔开,后面是传入实际操作值
|
|
|
|
|
String[] split = serialPortModel.getDataValue().split("_"); |
|
|
|
|
if (split.length < 1) { |
|
|
|
|
return Constant.FAIL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 场景
|
|
|
|
|
int scene = Integer.parseInt(split[0]); |
|
|
|
|
|
|
|
|
|
if (Constant.WRITE.equals(type)) { |
|
|
|
|
// 实际操作值
|
|
|
|
|
deviceCodeParam.setDataValue(split[1].replace(":", "")); |
|
|
|
|
serialPortModel.setDataValue(split[1].replace(":", "")); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 根据读写类型设置功能码
|
|
|
|
|
deviceCodeParam.setFunCode(Constant.READ.equals(type) ? "03" : "06"); |
|
|
|
|
|
|
|
|
|
// 根据参数类型设置寄存器地址
|
|
|
|
|
String registerStr = ""; |
|
|
|
|
switch (deviceCodeParam.getParam()) { |
|
|
|
|
case "switching": |
|
|
|
|
// 开关动作
|
|
|
|
|
registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(64 + (scene - 1) * 6)), 4); |
|
|
|
|
deviceCodeParam.setRegisterSize(1); |
|
|
|
|
break; |
|
|
|
|
case "timeSetOpen1": |
|
|
|
|
// 开时间设置\读取1
|
|
|
|
|
registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(30 + (scene - 1) * 18)), 4); |
|
|
|
|
deviceCodeParam.setRegisterSize(1); |
|
|
|
|
if (Constant.WRITE.equals(type)) { |
|
|
|
|
deviceCodeParam.setFunCode("06"); |
|
|
|
|
String[] time = split[1].split(":"); |
|
|
|
|
deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time[0])*60 + Integer.parseInt(time[1]))); |
|
|
|
|
serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time[0])*60 + Integer.parseInt(time[1]))); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case "timeSetClose1": |
|
|
|
|
// 关时间设置\读取1
|
|
|
|
|
registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(31 + (scene - 1) * 18)), 4); |
|
|
|
|
deviceCodeParam.setRegisterSize(2); |
|
|
|
|
if (Constant.WRITE.equals(type)) { |
|
|
|
|
deviceCodeParam.setFunCode("06"); |
|
|
|
|
String[] time = split[1].split(":"); |
|
|
|
|
deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time[0])*60 + Integer.parseInt(time[1]))); |
|
|
|
|
serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time[0])*60 + Integer.parseInt(time[1]))); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case "timeSetOpen2": |
|
|
|
|
// 开时间设置\读取2
|
|
|
|
|
registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(32 + (scene - 1) * 18)), 4); |
|
|
|
|
deviceCodeParam.setRegisterSize(1); |
|
|
|
|
if (Constant.WRITE.equals(type)) { |
|
|
|
|
deviceCodeParam.setFunCode("06"); |
|
|
|
|
String[] time = split[1].split(":"); |
|
|
|
|
deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time[0])*60 + Integer.parseInt(time[1]))); |
|
|
|
|
serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time[0])*60 + Integer.parseInt(time[1]))); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case "timeSetClose2": |
|
|
|
|
// 关时间设置\读取2
|
|
|
|
|
registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(33 + (scene - 1) * 18)), 4); |
|
|
|
|
deviceCodeParam.setRegisterSize(2); |
|
|
|
|
if (Constant.WRITE.equals(type)) { |
|
|
|
|
deviceCodeParam.setFunCode("06"); |
|
|
|
|
String[] time = split[1].split(":"); |
|
|
|
|
deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time[0])*60 + Integer.parseInt(time[1]))); |
|
|
|
|
serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time[0])*60 + Integer.parseInt(time[1]))); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case "timeSetOpen3": |
|
|
|
|
// 开时间设置\读取3
|
|
|
|
|
registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(34 + (scene - 1) * 18)), 4); |
|
|
|
|
deviceCodeParam.setRegisterSize(1); |
|
|
|
|
if (Constant.WRITE.equals(type)) { |
|
|
|
|
deviceCodeParam.setFunCode("06"); |
|
|
|
|
String[] time = split[1].split(":"); |
|
|
|
|
deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time[0])*60 + Integer.parseInt(time[1]))); |
|
|
|
|
serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time[0])*60 + Integer.parseInt(time[1]))); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case "timeSetClose3": |
|
|
|
|
// 关时间设置\读取3
|
|
|
|
|
registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(35 + (scene - 1) * 18)), 4); |
|
|
|
|
deviceCodeParam.setRegisterSize(2); |
|
|
|
|
if (Constant.WRITE.equals(type)) { |
|
|
|
|
deviceCodeParam.setFunCode("06"); |
|
|
|
|
String[] time = split[1].split(":"); |
|
|
|
|
deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time[0])*60 + Integer.parseInt(time[1]))); |
|
|
|
|
serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time[0])*60 + Integer.parseInt(time[1]))); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case "timeSetOpen4": |
|
|
|
|
// 开时间设置\读取4
|
|
|
|
|
registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(36 + (scene - 1) * 18)), 4); |
|
|
|
|
deviceCodeParam.setRegisterSize(1); |
|
|
|
|
if (Constant.WRITE.equals(type)) { |
|
|
|
|
deviceCodeParam.setFunCode("06"); |
|
|
|
|
String[] time = split[1].split(":"); |
|
|
|
|
deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time[0])*60 + Integer.parseInt(time[1]))); |
|
|
|
|
serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time[0])*60 + Integer.parseInt(time[1]))); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case "timeSetClose4": |
|
|
|
|
// 关时间设置\读取4
|
|
|
|
|
registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(37 + (scene - 1) * 18)), 4); |
|
|
|
|
deviceCodeParam.setRegisterSize(2); |
|
|
|
|
if (Constant.WRITE.equals(type)) { |
|
|
|
|
deviceCodeParam.setFunCode("06"); |
|
|
|
|
String[] time = split[1].split(":"); |
|
|
|
|
deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time[0])*60 + Integer.parseInt(time[1]))); |
|
|
|
|
serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time[0])*60 + Integer.parseInt(time[1]))); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case "channelSet": |
|
|
|
|
// 多路设置
|
|
|
|
|
registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(68 + (scene - 1) * 6)), 4); |
|
|
|
|
deviceCodeParam.setRegisterSize(2); |
|
|
|
|
if (Constant.WRITE.equals(type)) { |
|
|
|
|
deviceCodeParam.setFunCode("10"); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case "weekSet": |
|
|
|
|
// 星期设置
|
|
|
|
|
registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(24 + (scene-1) * 18)), 4); |
|
|
|
|
if (Constant.WRITE.equals(type)) { |
|
|
|
|
String dataValue = ExchangeStringUtil.addZeroForNum(deviceCodeParam.getDataValue(), 8); |
|
|
|
|
dataValue = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.parseByte2HexStr(dataValue), 4); |
|
|
|
|
dataValue = ExchangeStringUtil.hexToDec(dataValue); |
|
|
|
|
deviceCodeParam.setDataValue(dataValue); |
|
|
|
|
serialPortModel.setDataValue(dataValue); |
|
|
|
|
} |
|
|
|
|
deviceCodeParam.setRegisterSize(1); |
|
|
|
|
break; |
|
|
|
|
case "dateCalibrationSet": |
|
|
|
|
// 时间设置
|
|
|
|
|
int registerValue = 0; |
|
|
|
|
deviceCodeParam.setRegisterSize(7); |
|
|
|
|
registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(registerValue)), 4); |
|
|
|
|
if (Constant.WRITE.equals(type)) { |
|
|
|
|
deviceCodeParam.setFunCode("10"); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
return Constant.FAIL; |
|
|
|
|
} |
|
|
|
|
deviceCodeParam.setRegisterAddr(registerStr); |
|
|
|
|
return serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private String handleAlitaTimeControl(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, String type, SerialPortSingle2 serialPortSingle) { |
|
|
|
|
// 设置值前面两位是场景选择,_隔开,后面是传入实际操作值
|
|
|
|
|
String[] split = serialPortModel.getDataValue().split("_"); |
|
|
|
|
|