From 585fb9b67dc81f9e14f2cbf59f1c3a02eb4fe98f Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期四, 11 六月 2020 10:58:23 +0800
Subject: [PATCH] 1.添加无人机多参数的数据接收解析函数 2.添加参数存储函数

---
 src/main/kotlin/com/flightfeather/uav/socket/UAVByteDataDecoder.kt |   28 +++++++++++++++-------------
 1 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/src/main/kotlin/com/flightfeather/uav/socket/ObdByteDataDecoder.kt b/src/main/kotlin/com/flightfeather/uav/socket/UAVByteDataDecoder.kt
similarity index 78%
rename from src/main/kotlin/com/flightfeather/uav/socket/ObdByteDataDecoder.kt
rename to src/main/kotlin/com/flightfeather/uav/socket/UAVByteDataDecoder.kt
index 8810240..bb88cb1 100644
--- a/src/main/kotlin/com/flightfeather/uav/socket/ObdByteDataDecoder.kt
+++ b/src/main/kotlin/com/flightfeather/uav/socket/UAVByteDataDecoder.kt
@@ -7,14 +7,18 @@
 
 /**
  * @author riku
- * Date: 2019/9/16
+ * Date: 2020/06/02
  * 鏁版嵁绮樺寘鍒嗗寘瑙g爜鍣�
  */
-class ObdByteDataDecoder : ByteToMessageDecoder() {
+class UAVByteDataDecoder : ByteToMessageDecoder() {
 
     companion object {
-        const val BASE_LENGTH = 2 + 1 + 17 + 1 + 1 + 2 + 0 + 1
-        const val HEAD = 0x23.toByte()
+        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 HEAD1 = 0x01.toByte()
+        const val HEAD2 = 0x05.toByte()
     }
 
     override fun decode(p0: ChannelHandlerContext?, p1: ByteBuf?, p2: MutableList<Any>?) {
@@ -40,7 +44,7 @@
                     // 璇诲埌浜嗗崗璁殑寮�濮嬫爣蹇楋紝缁撴潫while寰幆
                     val b = ByteArray(2)
                     it.readBytes(b)
-                    if (b[0] == HEAD && b[1] == HEAD) {
+                    if (b[0] == HEAD1 && b[1] == HEAD2) {
                         dataList.add(b[0])
                         dataList.add(b[1])
                         break
@@ -57,7 +61,7 @@
                     }
                 }
 
-                ByteArray(1 + 17 + 1 + 1).apply {
+                ByteArray(1).apply {
                     it.readBytes(this)
                 }.forEach {b ->
                     dataList.add(b)
@@ -65,15 +69,15 @@
 
                 //鏁版嵁鍗曞厓鐨勯暱搴�
                 val length = getDataUnitLength(it, dataList)
-                // 鍒ゆ柇璇锋眰鏁版嵁鍗曞厓鏁版嵁鍙�1涓瓧鑺傜殑鏍¢獙鐮佹槸鍚﹀埌榻�
-                if (it.readableBytes() < length + 1) {
+                // 鍒ゆ柇璇锋眰鏁版嵁鍗曞厓鏁版嵁鍙奫LENGTH_BYTES]涓瓧鑺傜殑鏍¢獙鐮佹槸鍚﹀埌榻�
+                if (it.readableBytes() < length + BCC_BYTES) {
                     // 杩樺師璇绘寚閽�
                     it.readerIndex(beginReader)
                     return
                 }
 
                 //璇诲彇鏁版嵁鍗曞厓鍜屾牎楠岀爜鏁版嵁
-                ByteArray(length + 1).apply {
+                ByteArray(length + BCC_BYTES).apply {
                     it.readBytes(this)
                 }.forEach {b ->
                     dataList.add(b)
@@ -91,11 +95,10 @@
     private fun getDataUnitLength(p1: ByteBuf, dataList: MutableList<Byte>): Int {
         val sb = StringBuilder()
 
-        ByteArray(2).apply {
+        ByteArray(1).apply {
             p1.readBytes(this)
         }.forEach { b ->
-            var a = 0
-            a = if (b < 0) {
+            val a: Int = if (b < 0) {
                 b + 256
             } else {
                 b.toInt()
@@ -108,5 +111,4 @@
 
         return sb.toString().toInt(16)
     }
-
 }
\ No newline at end of file

--
Gitblit v1.9.3