|
@@ -17,7 +17,7 @@ import java.util.List;
|
|
|
public class MesMessageDecoder extends ByteToMessageDecoder {
|
|
public class MesMessageDecoder extends ByteToMessageDecoder {
|
|
|
private static final Logger log = LoggerFactory.getLogger(MesMessageDecoder.class);
|
|
private static final Logger log = LoggerFactory.getLogger(MesMessageDecoder.class);
|
|
|
|
|
|
|
|
- private static final int PACKET_SIZE = 48; // 最短包长度(v2 oprno 扩到 8 后 +2)
|
|
|
|
|
|
|
+ private static final int PACKET_SIZE = 46; // 最短包长度(与 okng 对齐)
|
|
|
private static final int PACKET_MAX_SIZE = 1000; // 最长包长度
|
|
private static final int PACKET_MAX_SIZE = 1000; // 最长包长度
|
|
|
private static final int FIXED_LENGTH = 98; // 标准报文长度(v2 oprno 扩到 8 后 +2)
|
|
private static final int FIXED_LENGTH = 98; // 标准报文长度(v2 oprno 扩到 8 后 +2)
|
|
|
private static final String SPLIT = "bbbbfffffARW"; // 报文分隔符
|
|
private static final String SPLIT = "bbbbfffffARW"; // 报文分隔符
|
|
@@ -114,12 +114,22 @@ public class MesMessageDecoder extends ByteToMessageDecoder {
|
|
|
str = SPLIT + str;
|
|
str = SPLIT + str;
|
|
|
int tpsize = 0;
|
|
int tpsize = 0;
|
|
|
|
|
|
|
|
|
|
+ // 协议 v2(oprno 6→8):SYNR/AXTW/ACLW 从 46→48,AQDW 类从 96→98
|
|
|
|
|
+ // MKSW/MSBW/MCSW 服务端未随 v2 扩展,仍为 96
|
|
|
switch (msgType) {
|
|
switch (msgType) {
|
|
|
case "SYNR": // 同步
|
|
case "SYNR": // 同步
|
|
|
case "AXTW": // 心跳
|
|
case "AXTW": // 心跳
|
|
|
case "ACLW": // 重连
|
|
case "ACLW": // 重连
|
|
|
- if (str.length() >= 46) {
|
|
|
|
|
- tpsize = 46;
|
|
|
|
|
|
|
+ if (str.length() >= 48) {
|
|
|
|
|
+ tpsize = 48;
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ case "MKSW": // 开始工作(服务端 v2 未扩,仍 96)
|
|
|
|
|
+ case "MSBW":
|
|
|
|
|
+ case "MCSW":
|
|
|
|
|
+ case "AQRW": // 查询确认(与 okng 对齐,96)
|
|
|
|
|
+ if (str.length() >= 96) {
|
|
|
|
|
+ tpsize = 96;
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
case "MCJW":
|
|
case "MCJW":
|
|
@@ -127,10 +137,6 @@ public class MesMessageDecoder extends ByteToMessageDecoder {
|
|
|
case "MBDW":
|
|
case "MBDW":
|
|
|
case "MJBW":
|
|
case "MJBW":
|
|
|
case "MQDW":
|
|
case "MQDW":
|
|
|
- case "MKSW":
|
|
|
|
|
- case "MSBW":
|
|
|
|
|
- case "MCSW":
|
|
|
|
|
- case "AQRW":
|
|
|
|
|
case "VLDW":
|
|
case "VLDW":
|
|
|
default:
|
|
default:
|
|
|
if (str.length() >= FIXED_LENGTH) {
|
|
if (str.length() >= FIXED_LENGTH) {
|