|
@@ -55,6 +55,8 @@ public class Decoder104 {
|
|
|
index += 2;
|
|
|
Iec104Util.setMeaageAttribute(ruleDetail104);
|
|
|
setMessage(ruleDetail104, bytes, index);
|
|
|
+ // log.info("解码器是否连续: " + ruleDetail104.isContinuous());
|
|
|
+ // log.info("解码器结果结果: " + JSON.toJSONString(ruleDetail104));
|
|
|
return ruleDetail104;
|
|
|
}
|
|
|
|
|
@@ -101,6 +103,9 @@ public class Decoder104 {
|
|
|
int messageSize = 0;
|
|
|
while (messageSize < ruleDetail104.getMeasgLength()) {
|
|
|
MessageInfo messageObj = new MessageInfo();
|
|
|
+ // 消息地址长度
|
|
|
+ messageObj.setMessageInfoLength(messageLength);
|
|
|
+ // 消息地址int+byte
|
|
|
messageObj.setMessageAddress(messageAddress);
|
|
|
byte[] messageInfos = ByteUtil.getByte(bytes, mesageIndex, messageLength);
|
|
|
mesageIndex += messageLength;
|
|
@@ -114,20 +119,17 @@ public class Decoder104 {
|
|
|
// 0(每个信息元素后缀1个字节)
|
|
|
ruleDetail104.setQualifiersType(QualifiersEnum.getQualifiersEnum(ruleDetail104.getTypeIdentifier(), bytes[mesageIndex++]));
|
|
|
}
|
|
|
-
|
|
|
messageSize++;
|
|
|
messageAddress++;
|
|
|
messages.add(messageObj);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
if (ruleDetail104.isQualifiers() && !TypeIdentifierEnum.isTelemetry(ruleDetail104.getTypeIdentifier())) {
|
|
|
// 判断是否有限定词
|
|
|
ruleDetail104.setQualifiersType(QualifiersEnum.getQualifiersEnum(ruleDetail104.getTypeIdentifier(), bytes[mesageIndex++]));
|
|
|
}
|
|
|
|
|
|
-
|
|
|
if (ruleDetail104.isTimeScaleExit()) {
|
|
|
ruleDetail104.setTimeScale(ByteUtil.byte2Hdate(ByteUtil.getByte(bytes, mesageIndex, 7)));
|
|
|
}
|
|
@@ -152,8 +154,12 @@ public class Decoder104 {
|
|
|
int messageSize = 0;
|
|
|
while (messageSize < ruleDetail104.getMeasgLength()) {
|
|
|
MessageInfo messageObj = new MessageInfo();
|
|
|
- // 消息地址
|
|
|
- messageObj.setMessageAddress(Iec104Util.messageAddressToInt(ByteUtil.getByte(bytes, mesageIndex, 3)));
|
|
|
+ // 消息地址长度
|
|
|
+ messageObj.setMessageInfoLength(messageLength);
|
|
|
+ // 消息地址int+byte+hex
|
|
|
+ messageObj.setMessageAddressByte(ByteUtil.getByte(bytes, mesageIndex, 3));
|
|
|
+ messageObj.setMessageAddressByteHex(ByteUtil.byteArrayToHexString(messageObj.getMessageAddressByte()));
|
|
|
+ messageObj.setMessageAddress(Iec104Util.messageAddressToInt(messageObj.getMessageAddressByte()));
|
|
|
mesageIndex += 3;
|
|
|
|
|
|
if (ruleDetail104.isMessage()) {
|
|
@@ -178,13 +184,11 @@ public class Decoder104 {
|
|
|
messages.add(messageObj);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
if (ruleDetail104.isQualifiers() && !TypeIdentifierEnum.isTelemetry(ruleDetail104.getTypeIdentifier())) {
|
|
|
// 判断是否有限定词
|
|
|
ruleDetail104.setQualifiersType(QualifiersEnum.getQualifiersEnum(ruleDetail104.getTypeIdentifier(), bytes[mesageIndex++]));
|
|
|
}
|
|
|
|
|
|
-
|
|
|
if (ruleDetail104.isTimeScaleExit()) {
|
|
|
ruleDetail104.setTimeScale(ByteUtil.byte2Hdate(ByteUtil.getByte(bytes, mesageIndex, 7)));
|
|
|
}
|