From 6f6c35f0e0881d2bbf32ad62f6c59f0ab1504854 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期一, 16 九月 2019 20:30:16 +0800
Subject: [PATCH] 修改采样时间的存储问题
---
src/main/kotlin/com/flightfeather/obd/socket/MessageManager.kt | 76 ++++++++++++++++++++++++++------------
1 files changed, 52 insertions(+), 24 deletions(-)
diff --git a/src/main/kotlin/com/flightfeather/obd/socket/MessageManager.kt b/src/main/kotlin/com/flightfeather/obd/socket/MessageManager.kt
index 6f1a280..626194f 100644
--- a/src/main/kotlin/com/flightfeather/obd/socket/MessageManager.kt
+++ b/src/main/kotlin/com/flightfeather/obd/socket/MessageManager.kt
@@ -1,17 +1,16 @@
package com.flightfeather.obd.socket
import com.flightfeather.obd.common.utils.FileUtil
-import com.flightfeather.obd.lightshare.bean.BaseJson
-import com.flightfeather.obd.lightshare.bean.ObdDataVo
import com.flightfeather.obd.repository.ObdDataRepository
+import com.flightfeather.obd.socket.bean.ObdPackageData
import com.flightfeather.obd.socket.decoder.VehicleDataDecoder
-import com.google.gson.Gson
+import com.flightfeather.obd.socket.decoder.impl.DataPackageDecoderImpl
import io.netty.channel.ChannelHandlerContext
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Component
-import org.springframework.util.FileSystemUtils
+import java.text.SimpleDateFormat
+import java.util.*
import javax.annotation.PostConstruct
-import javax.annotation.Resource
/**
* 澶勭悊socket鎺ユ敹鐨勬秷鎭�
@@ -30,6 +29,7 @@
lateinit var obdDataRepository: ObdDataRepository
val vehicleDataDecoder = VehicleDataDecoder()
+ val dataPackageDecoder = DataPackageDecoderImpl()
@PostConstruct
fun init() {
@@ -38,29 +38,57 @@
}
fun dealStringMsg(msg: String, ctx: ChannelHandlerContext?) {
-// try {
-// val baseJson = Gson().fromJson<BaseJson>(msg, BaseJson::class.java)
-// when (baseJson.cmdCode) {
-// 2001 -> {
-// val data = Gson().fromJson(msg, ObdDataVo::class.java)
-// DeviceSession.saveDevice(data.obdVin, ctx)
-// instance.obdDataRepository.saveObdData(data)
-// }
-// }
-// } catch (e: Throwable) {
-// }
-
saveToTxt(msg)
- val packageData = vehicleDataDecoder.decode(msg)
+
+ if (bccCheck(msg)) {
+ //瑙e寘
+ val packageData = vehicleDataDecoder.decode(msg)
+ //淇濆瓨
+ DeviceSession.saveDevice(packageData.deviceCode, ctx)
+ saveToDataBase(packageData)
+ } else {
+ println("------鏁版嵁BCC鏍¢獙澶辫触锛岃垗寮� [${SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date())}]")
+ }
}
- fun dealByteArrayMsg(msg: ByteArray, ctx: ChannelHandlerContext?) {
- val b = ByteArray(20) {19}
- println(b)
- }
-
+ /**
+ * 淇濆瓨鑷硉xt鏂囨湰
+ */
fun saveToTxt(msg: String) {
- val data = "data=> $msg"
+ val data = "[${SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date())}]data=> $msg"
FileUtil.instance?.saveObdData(data)
}
+
+ /**
+ * 淇濆瓨鑷虫暟鎹簱
+ */
+ fun saveToDataBase(packageData: ObdPackageData) {
+ instance.obdDataRepository.saveObdData(packageData)
+ }
+
+ /**
+ * BCC锛堝紓鎴栨牎楠岋級
+ */
+ fun bccCheck(msg: String):Boolean {
+ val list = mutableListOf<String>().apply {
+ addAll(dataPackageDecoder.toStringList(msg))
+ //鍘婚櫎2 浣嶈捣濮嬬
+ removeAt(0)
+ removeAt(0)
+ }
+ //鍙栧緱鏁版嵁鍖呬腑鐨刡cc鏍¢獙缁撴灉
+ val oldBcc = list[list.size - 1].toInt(16)
+
+ //鍘婚櫎鏍¢獙缁撴灉
+ list.removeAt(list.size-1)
+
+ //璁$畻bcc鏍¢獙缁撴灉
+ var newBcc = 0x00
+ list.forEach {
+ newBcc = newBcc.xor(it.toInt(16))
+ }
+
+ //杩斿洖鏍¢獙缁撴灉鏄惁姝g‘
+ return oldBcc == newBcc
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3