From 09f411e381f885619b32e05fc89cad26bb20824d Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期一, 01 三月 2021 14:27:56 +0800 Subject: [PATCH] Merge remote-tracking branch 'obdserver2/master' --- src/main/kotlin/com/flightfeather/uav/socket/UAVByteDataDecoder.kt | 33 +++++++++++++++++---------------- 1 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/main/kotlin/com/flightfeather/uav/socket/UAVByteDataDecoder.kt b/src/main/kotlin/com/flightfeather/uav/socket/UAVByteDataDecoder.kt index bb88cb1..3ca630f 100644 --- a/src/main/kotlin/com/flightfeather/uav/socket/UAVByteDataDecoder.kt +++ b/src/main/kotlin/com/flightfeather/uav/socket/UAVByteDataDecoder.kt @@ -1,5 +1,6 @@ package com.flightfeather.uav.socket +import com.flightfeather.uav.socket.decoder.impl.DataPackageDecoderImpl import io.netty.buffer.ByteBuf import io.netty.channel.ChannelHandlerContext import io.netty.handler.codec.ByteToMessageDecoder @@ -13,12 +14,11 @@ class UAVByteDataDecoder : ByteToMessageDecoder() { companion object { - private const val HEAD_BYTES = 2//鏁版嵁澶存墍鍗犻暱搴� - private const val LENGTH_BYTES = 1//鏁版嵁浣嶆暟鎵�鍗犻暱搴� - private const val BCC_BYTES = 2//鏍¢獙鐮侀暱搴� - const val BASE_LENGTH = HEAD_BYTES + LENGTH_BYTES + BCC_BYTES + const val BASE_LENGTH = DataPackageDecoderImpl.HEAD_BYTES + DataPackageDecoderImpl.COMMAND_UNIT_BYTES + + DataPackageDecoderImpl.DEVICE_CODE_BYTES + DataPackageDecoderImpl.DATA_LENGTH + DataPackageDecoderImpl.BCC_BYTES const val HEAD1 = 0x01.toByte() - const val HEAD2 = 0x05.toByte() + const val HEAD_LENGTH = DataPackageDecoderImpl.HEAD_BYTES + DataPackageDecoderImpl.COMMAND_UNIT_BYTES + + DataPackageDecoderImpl.DEVICE_CODE_BYTES } override fun decode(p0: ChannelHandlerContext?, p1: ByteBuf?, p2: MutableList<Any>?) { @@ -42,11 +42,12 @@ // 鏍囪鍖呭ご寮�濮嬬殑index it.markReaderIndex() // 璇诲埌浜嗗崗璁殑寮�濮嬫爣蹇楋紝缁撴潫while寰幆 - val b = ByteArray(2) + val b = ByteArray(HEAD_LENGTH) it.readBytes(b) - if (b[0] == HEAD1 && b[1] == HEAD2) { - dataList.add(b[0]) - dataList.add(b[1]) + if (b[0] == HEAD1) { + b.forEach {b -> + dataList.add(b) + } break } @@ -61,23 +62,23 @@ } } - ByteArray(1).apply { - it.readBytes(this) - }.forEach {b -> - dataList.add(b) - } +// ByteArray(1).apply { +// it.readBytes(this) +// }.forEach {b -> +// dataList.add(b) +// } //鏁版嵁鍗曞厓鐨勯暱搴� val length = getDataUnitLength(it, dataList) // 鍒ゆ柇璇锋眰鏁版嵁鍗曞厓鏁版嵁鍙奫LENGTH_BYTES]涓瓧鑺傜殑鏍¢獙鐮佹槸鍚﹀埌榻� - if (it.readableBytes() < length + BCC_BYTES) { + if (it.readableBytes() < length + DataPackageDecoderImpl.BCC_BYTES) { // 杩樺師璇绘寚閽� it.readerIndex(beginReader) return } //璇诲彇鏁版嵁鍗曞厓鍜屾牎楠岀爜鏁版嵁 - ByteArray(length + BCC_BYTES).apply { + ByteArray(length + DataPackageDecoderImpl.BCC_BYTES).apply { it.readBytes(this) }.forEach {b -> dataList.add(b) -- Gitblit v1.9.3