|
|
|
@ -53,7 +53,7 @@ public class TimeControlStrategy implements DeviceStrategy {
|
|
|
|
|
if (deviceAddr != null && !deviceAddr.isEmpty()) { |
|
|
|
|
str = ExchangeStringUtil.decToHex(deviceAddr); |
|
|
|
|
str = ExchangeStringUtil.addZeroForNum(str, 2); //以0补位
|
|
|
|
|
if (!StringUtils.isBlank(brand) && "阿丽塔".equals(brand)) { |
|
|
|
|
if (!StringUtils.isBlank(brand) && Constant.BRAND_ALITA.equals(brand)) { |
|
|
|
|
try { |
|
|
|
|
if (!StringUtils.isBlank(funCode)) { |
|
|
|
|
registerAddr = ExchangeStringUtil.addZeroForNum(registerAddr, 4); //寄存器地址
|
|
|
|
@ -63,21 +63,32 @@ public class TimeControlStrategy implements DeviceStrategy {
|
|
|
|
|
str = str + "03" + registerAddr + registerSize; |
|
|
|
|
} else if (funCode.equals("10")) {//写
|
|
|
|
|
// 判断寄存器地址
|
|
|
|
|
registerAddr = registerAddr.toUpperCase(); |
|
|
|
|
if ("0108".equals(registerAddr)) { |
|
|
|
|
// 1F1001080003060014001200225B97
|
|
|
|
|
str = str + funCode + registerAddr + "000306" |
|
|
|
|
+ "00" + dataValue.substring(2, 4) // 年
|
|
|
|
|
+ "00" + dataValue.substring(4,6) // 月
|
|
|
|
|
+ "00" + dataValue.substring(6,8); // 日
|
|
|
|
|
} else if ("010c".equals(registerAddr)) { |
|
|
|
|
} else if ("010C".equals(registerAddr)) { |
|
|
|
|
// 1F10010C0004080015004300300002BA23
|
|
|
|
|
str = str + funCode + registerAddr + "000408" |
|
|
|
|
+ "00" + dataValue.substring(8, 10) // 时
|
|
|
|
|
+ "00" + dataValue.substring(10,12) // 分
|
|
|
|
|
+ "00" + dataValue.substring(12,14) // 秒
|
|
|
|
|
+ "0000"; // 毫秒
|
|
|
|
|
+ "0000" // 秒
|
|
|
|
|
+ "0002"; // 只写 写2设置日期,写1读取日期
|
|
|
|
|
} else if ("0041".equals(registerAddr)) { |
|
|
|
|
str = str + funCode + registerAddr + "000204" |
|
|
|
|
+ "00" + dataValue.substring(0, 2) // 分
|
|
|
|
|
+ "00" + dataValue.substring(2, 4); // 秒
|
|
|
|
|
} else if ("0044".equals(registerAddr)) { |
|
|
|
|
str = str + funCode + registerAddr + "000204" |
|
|
|
|
+ ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.parseByte2HexStr(dataValue.substring(0, 8)), 4) // 1-8路
|
|
|
|
|
+ ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.parseByte2HexStr(dataValue.substring(8, 16)), 4); // 9-16路
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} else if (funCode.equals("06")) { |
|
|
|
|
str = str + funCode + registerAddr + ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(dataValue), 4); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
String checkWord = ExchangeStringUtil.getStrCRC16(str); //CRC16校验
|
|
|
|
@ -133,7 +144,7 @@ public class TimeControlStrategy implements DeviceStrategy {
|
|
|
|
|
String data = ""; |
|
|
|
|
if (checkStr.substring(2, 4).equalsIgnoreCase("03")) {// 读
|
|
|
|
|
int rec = dataStr.length(); |
|
|
|
|
if (!StringUtils.isBlank(brand) && "阿丽塔".equals(brand)) { |
|
|
|
|
if (!StringUtils.isBlank(brand) && Constant.BRAND_ALITA.equals(brand)) { |
|
|
|
|
if (rec == 14 && isExactlyDivisible("0040", registerAddr)) { |
|
|
|
|
// 开关设置
|
|
|
|
|
// 16进制转2进制 10011
|
|
|
|
|