From 81bd0388494d45463de42cd91bd8c33f10f0030a Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期四, 17 六月 2021 10:27:21 +0800 Subject: [PATCH] 1. 新增用电量数据的接收协议 2. 调整socket接收模块的代码结构 --- src/main/kotlin/com/flightfeather/uav/socket/UAVByteDataDecoder.kt | 20 +++++++++++--------- 1 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/com/flightfeather/uav/socket/UAVByteDataDecoder.kt b/src/main/kotlin/com/flightfeather/uav/socket/UAVByteDataDecoder.kt index 3ca630f..47017e0 100644 --- a/src/main/kotlin/com/flightfeather/uav/socket/UAVByteDataDecoder.kt +++ b/src/main/kotlin/com/flightfeather/uav/socket/UAVByteDataDecoder.kt @@ -1,10 +1,9 @@ package com.flightfeather.uav.socket -import com.flightfeather.uav.socket.decoder.impl.DataPackageDecoderImpl +import com.flightfeather.uav.socket.decoder.DataPackageDecoder import io.netty.buffer.ByteBuf import io.netty.channel.ChannelHandlerContext import io.netty.handler.codec.ByteToMessageDecoder -import java.lang.StringBuilder /** * @author riku @@ -14,11 +13,13 @@ class UAVByteDataDecoder : ByteToMessageDecoder() { companion object { - const val BASE_LENGTH = DataPackageDecoderImpl.HEAD_BYTES + DataPackageDecoderImpl.COMMAND_UNIT_BYTES + - DataPackageDecoderImpl.DEVICE_CODE_BYTES + DataPackageDecoderImpl.DATA_LENGTH + DataPackageDecoderImpl.BCC_BYTES + const val BASE_LENGTH = DataPackageDecoder.HEAD_BYTES + DataPackageDecoder.COMMAND_UNIT_BYTES + + DataPackageDecoder.DEVICE_CODE_BYTES + DataPackageDecoder.DATA_LENGTH + DataPackageDecoder.BCC_BYTES const val HEAD1 = 0x01.toByte() - const val HEAD_LENGTH = DataPackageDecoderImpl.HEAD_BYTES + DataPackageDecoderImpl.COMMAND_UNIT_BYTES + - DataPackageDecoderImpl.DEVICE_CODE_BYTES + const val COMMAND_1 = 0x01.toByte() + const val COMMAND_2 = 0x01.toByte() + const val HEAD_LENGTH = DataPackageDecoder.HEAD_BYTES + DataPackageDecoder.COMMAND_UNIT_BYTES + + DataPackageDecoder.DEVICE_CODE_BYTES } override fun decode(p0: ChannelHandlerContext?, p1: ByteBuf?, p2: MutableList<Any>?) { @@ -44,7 +45,8 @@ // 璇诲埌浜嗗崗璁殑寮�濮嬫爣蹇楋紝缁撴潫while寰幆 val b = ByteArray(HEAD_LENGTH) it.readBytes(b) - if (b[0] == HEAD1) { + if (b[0] == HEAD1 && + (b[1] == COMMAND_1 || b[2] == COMMAND_2)) { b.forEach {b -> dataList.add(b) } @@ -71,14 +73,14 @@ //鏁版嵁鍗曞厓鐨勯暱搴� val length = getDataUnitLength(it, dataList) // 鍒ゆ柇璇锋眰鏁版嵁鍗曞厓鏁版嵁鍙奫LENGTH_BYTES]涓瓧鑺傜殑鏍¢獙鐮佹槸鍚﹀埌榻� - if (it.readableBytes() < length + DataPackageDecoderImpl.BCC_BYTES) { + if (it.readableBytes() < length + DataPackageDecoder.BCC_BYTES) { // 杩樺師璇绘寚閽� it.readerIndex(beginReader) return } //璇诲彇鏁版嵁鍗曞厓鍜屾牎楠岀爜鏁版嵁 - ByteArray(length + DataPackageDecoderImpl.BCC_BYTES).apply { + ByteArray(length + DataPackageDecoder.BCC_BYTES).apply { it.readBytes(this) }.forEach {b -> dataList.add(b) -- Gitblit v1.9.3