mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-07-22 06:58:07 +08:00
优化友电协议兼容逻辑
This commit is contained in:
@@ -118,21 +118,23 @@ public class YouDianProtocolDecoder extends ByteToMessageDecoder {
|
||||
ByteBuf frame = null;
|
||||
try {
|
||||
// 检查剩余数据是否足够
|
||||
if (buffer.readableBytes() < HEADER_LENGTH_DNY + 1) {
|
||||
if (buffer.readableBytes() < HEADER_LENGTH_DNY + 2) {
|
||||
buffer.readerIndex(beginReader);
|
||||
return;
|
||||
}
|
||||
// 获取消息长度
|
||||
int length = buffer.getUnsignedByte(beginReader + HEADER_LENGTH_DNY);
|
||||
// DNY协议长度域为2字节,小端模式。长度不包含包头和长度域本身。
|
||||
int length = buffer.getUnsignedByte(beginReader + HEADER_LENGTH_DNY)
|
||||
| (buffer.getUnsignedByte(beginReader + HEADER_LENGTH_DNY + 1) << 8);
|
||||
// log.info("获取消息长度, length:{}", length);
|
||||
int frameLength = HEADER_LENGTH_DNY + 2 + length;
|
||||
// 检查剩余数据是否足够
|
||||
if (buffer.readableBytes() < HEADER_LENGTH_DNY + 1 + length) {
|
||||
if (buffer.readableBytes() < frameLength) {
|
||||
buffer.readerIndex(beginReader);
|
||||
return;
|
||||
}
|
||||
// 读取 data 数据
|
||||
frame = buffer.retainedSlice(beginReader, HEADER_LENGTH_DNY + length + 2);
|
||||
buffer.readerIndex(beginReader + HEADER_LENGTH_DNY + length + 2);
|
||||
frame = buffer.retainedSlice(beginReader, frameLength);
|
||||
buffer.readerIndex(beginReader + frameLength);
|
||||
out.add(frame);
|
||||
} finally {
|
||||
// if (frame != null) {
|
||||
|
||||
Reference in New Issue
Block a user