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/MessageManager.kt | 112 ++++++++++++------------------------------------------- 1 files changed, 25 insertions(+), 87 deletions(-) diff --git a/src/main/kotlin/com/flightfeather/uav/socket/MessageManager.kt b/src/main/kotlin/com/flightfeather/uav/socket/MessageManager.kt index 51ad90d..3301672 100644 --- a/src/main/kotlin/com/flightfeather/uav/socket/MessageManager.kt +++ b/src/main/kotlin/com/flightfeather/uav/socket/MessageManager.kt @@ -2,13 +2,10 @@ import com.flightfeather.uav.common.utils.FileUtil import com.flightfeather.uav.repository.* -import com.flightfeather.uav.socket.bean.EngineDataStream -import com.flightfeather.uav.socket.bean.ObdInfo -import com.flightfeather.uav.socket.bean.ObdPackageData -import com.flightfeather.uav.socket.bean.SupplementDataStream -import com.flightfeather.uav.socket.decoder.VehicleDataDecoder +import com.flightfeather.uav.socket.bean.* +import com.flightfeather.uav.socket.decoder.AirDataDecoder import com.flightfeather.uav.socket.decoder.impl.DataPackageDecoderImpl -import com.flightfeather.uav.socket.eunm.ObdCommandUnit +import com.flightfeather.uav.socket.eunm.AirCommandUnit import io.netty.buffer.Unpooled import io.netty.channel.ChannelHandlerContext import org.springframework.beans.factory.annotation.Autowired @@ -31,50 +28,40 @@ } @Autowired - lateinit var obdDataRepository: ObdDataRepository - @Autowired - lateinit var originDataRepository: OriginDataRepository - @Autowired - lateinit var obdInfoRepository: ObdInfoRepository - @Autowired - lateinit var dataStreamRepository: DataStreamRepository - @Autowired - lateinit var carLogoutRepository: CarLogoutRepository - @Autowired - lateinit var carLoginRepository: CarLoginRepository + lateinit var airDataRepository: AirDataRepository - val vehicleDataDecoder = VehicleDataDecoder() + val vehicleDataDecoder = AirDataDecoder() val dataPackageDecoder = DataPackageDecoderImpl() @PostConstruct fun init() { instance = this - instance.obdDataRepository = this.obdDataRepository - instance.originDataRepository = this.originDataRepository - instance.obdInfoRepository = this.obdInfoRepository - instance.dataStreamRepository = this.dataStreamRepository - instance.carLogoutRepository = this.carLogoutRepository - instance.carLoginRepository = this.carLoginRepository + airDataRepository = this.airDataRepository } fun dealStringMsg(msg: String, ctx: ChannelHandlerContext?) { //瑙e寘 val packageData = vehicleDataDecoder.decode(msg) - saveToTxt(msg) - val isCommand = command(packageData, ctx) - - if (isCommand) { - println("------杩滅▼鎺у埗鎸囦护 [${SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date())}]") - } else { - if (bccCheck(msg)) { - //淇濆瓨 - DeviceSession.saveDevice(packageData.deviceCode, ctx) - saveToDataBase(packageData, msg) - } else { - println("------鏁版嵁BCC鏍¢獙澶辫触锛岃垗寮� [${SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date())}]") + if (bccCheck(msg)) { + if (packageData.commandUnit == AirCommandUnit.Confirm.value) { + val t = mutableListOf<AirTypeData>() + packageData.dataUnit.forEach { + if (it is AirTypeData) { + t.add(it) + } + } + DeviceSession.saveAirType(packageData.deviceCode, t) + } else if (packageData.commandUnit == AirCommandUnit.AirData.value) { + val types = DeviceSession.getAirType(packageData.deviceCode) } + //淇濆瓨 + DeviceSession.saveDevice(packageData.deviceCode, ctx) +// saveToTxt(msg) + saveToDataBase(packageData) + } else { + println("------鏁版嵁BCC鏍¢獙澶辫触锛岃垗寮� [${SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date())}]") } } @@ -89,27 +76,9 @@ /** * 淇濆瓨鑷虫暟鎹簱 */ - fun saveToDataBase(packageData: ObdPackageData, msg: String) { -// instance.obdDataRepository.saveObdData(packageData) - instance.originDataRepository.saveOriginData(packageData, msg) + fun saveToDataBase(packageData: AirPackageData) { when (packageData.commandUnit) { - ObdCommandUnit.CarRegister.value -> instance.carLoginRepository.saveCarLogin(packageData) - ObdCommandUnit.RealTimeData.value, - ObdCommandUnit.ReplacementData.value -> { - var done = false - for (i in 0 until packageData.dataUnit.size) { - when (packageData.dataUnit[i]) { - is ObdInfo -> instance.obdInfoRepository.saveObdInfo(packageData) - is EngineDataStream, - is SupplementDataStream -> { - instance.dataStreamRepository.saveDataStream(packageData) - done = true - } - } - if (done) break - } - } - ObdCommandUnit.CarLogOut.value-> instance.carLogoutRepository.saveCarLogout(packageData) + AirCommandUnit.AirData.value -> instance.airDataRepository.saveAirData(packageData) } } @@ -139,37 +108,6 @@ return oldBcc == newBcc } - /** - * 杩滅▼鎸囦护 - */ - fun command(packageData: ObdPackageData, ctx: ChannelHandlerContext?): Boolean { - if (packageData.commandUnit == ObdCommandUnit.Update.value) { - val channel = DeviceSession.getDevice(packageData.deviceCode) - if (channel != null) { - val s = getDataPackage(packageData.deviceCode) - if (s == null) { - ctx?.writeAndFlush("[${packageData.deviceCode}] 璁惧缂栧彿涓虹┖") - } else { - val bytes = encodeToBytes(s) - channel.writeAndFlush(Unpooled.copiedBuffer(bytes)) - ctx?.writeAndFlush("[${packageData.deviceCode}] 鎸囦护鍙戦�佹垚鍔�") - } - } else { - ctx?.writeAndFlush("[${packageData.deviceCode}] 璁惧鏈繛鎺ユ垨涓嶅瓨鍦�") - } - return true - } else if (packageData.commandUnit != ObdCommandUnit.CarRegister.value - && packageData.commandUnit != ObdCommandUnit.RealTimeData.value - && packageData.commandUnit != ObdCommandUnit.ReplacementData.value - && packageData.commandUnit != ObdCommandUnit.CarLogOut.value - && packageData.commandUnit != ObdCommandUnit.TimeCalibration.value) { - ctx?.writeAndFlush("[${packageData.deviceCode}] 鍛戒护涓嶅瓨鍦�") - - return true - } else { - return false - } - } fun encodeToBytes(msg:String): ByteArray { val list = msg.split(" ") -- Gitblit v1.9.3