riku
2019-09-17 2bf337ab074f1c047c4f4e4df29ed994d3decaf1
修改一些属性及类的命名
已修改6个文件
已添加1个文件
已重命名2个文件
159 ■■■■ 文件已修改
src/main/kotlin/com/flightfeather/obd/repository/impl/ObdDataDaoImpl.kt 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/kotlin/com/flightfeather/obd/socket/bean/EngineDataStream.kt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/kotlin/com/flightfeather/obd/socket/bean/ObdData.kt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/kotlin/com/flightfeather/obd/socket/bean/SupplementDataStream.kt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/kotlin/com/flightfeather/obd/socket/decoder/RealTimeDataDecoder.kt 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/kotlin/com/flightfeather/obd/socket/decoder/impl/DataUnitDecoderImpl.kt 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/kotlin/com/flightfeather/obd/socket/decoder/impl/RealTimeDataDecoderImpl.kt 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/kotlin/com/flightfeather/obd/socket/eunm/ObdDataType.kt 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/test/kotlin/com/flightfeather/obd/socket/decoder/VehicleDataDecoderTest.kt 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/kotlin/com/flightfeather/obd/repository/impl/ObdDataDaoImpl.kt
@@ -71,13 +71,13 @@
                                obdTime = it.time
                                obdProtocol = it.obdProtocol
                                obdMil = it.obdMil
                                obdIdCode = it.obdSoftwareCode
                                obdIdCode = it.obdCrn
                                obdVerificationCode = it.obdCvn
                                obdFaultCodeNum = it.obdFaultCodeNum
                                obdFaultCode = it.obdFaultCode
                            }
                        }
                        is EngineDataFlow -> {
                        is EngineDataStream -> {
                            obdData.apply {
                                obdTime = it.time
                                obdLng = it.obdLong
@@ -101,7 +101,7 @@
                                obdTotalMileage = it.obdTotalMileage
                            }
                        }
                        is SupplementDataFlow -> {
                        is SupplementDataStream -> {
                            obdData.apply {
                                obdTime = it.time
                                obdEngineTorqueMode = it.obdEngineTorqueMode?.toString()
src/main/kotlin/com/flightfeather/obd/socket/bean/EngineDataStream.kt
ÎļþÃû´Ó src/main/kotlin/com/flightfeather/obd/socket/bean/EngineDataFlow.kt ÐÞ¸Ä
@@ -9,7 +9,7 @@
 * å®žæ—¶ä¿¡æ¯[RealTimeData] ä¸­çš„发动机数据流
 * æ•°æ®ç±»åž‹ @see [ObdDataType.EngineDataFlow]
 */
class EngineDataFlow(
class EngineDataStream(
        time: Date?,
        serialNum: Int?
) : RealTimeData(time, serialNum) {
src/main/kotlin/com/flightfeather/obd/socket/bean/ObdData.kt
@@ -19,7 +19,7 @@
    var diagnosisSupportStatus: String? = null//诊断支持状态
    var diagnosisReadyStatus: String? = null//诊断就绪状态
    var obdVin: String? = null
    var obdSoftwareCode: String? = null//软件标定识别号
    var obdCrn: String? = null//软件标定识别号
    var obdCvn: String? = null//标定验证码
    var IUPR:String?=null//定义参考 SAE J 1979-DA è¡¨ G11
    var obdFaultCodeNum: Int? = null//故障码总数: æœ‰æ•ˆå€¼èŒƒå›´ï¼š0~253,“0xFE”表示无效。
src/main/kotlin/com/flightfeather/obd/socket/bean/SupplementDataStream.kt
ÎļþÃû´Ó src/main/kotlin/com/flightfeather/obd/socket/bean/SupplementDataFlow.kt ÐÞ¸Ä
@@ -45,7 +45,7 @@
 *                                                                                                   æ•°æ®èŒƒå›´ï¼š-273~1734.96875℃
 *                                                                                                   â€œ0xFF,0xFF”表示无效
 */
class SupplementDataFlow(
class SupplementDataStream(
        time: Date?,
        serialNum: Int?
) : RealTimeData(time, serialNum) {
src/main/kotlin/com/flightfeather/obd/socket/decoder/RealTimeDataDecoder.kt
@@ -14,9 +14,9 @@
    fun getObdData(time: Date?, serialNum: Int, b: List<String>): ObdData?
    fun getEngineDataFlow(time: Date?, serialNum: Int, b: List<String>): EngineDataFlow?
    fun getEngineDataStream(time: Date?, serialNum: Int, b: List<String>): EngineDataStream?
    fun getSupplementDataFlow(time: Date?, serialNum: Int, b: List<String>): SupplementDataFlow?
    fun getSupplementDataStream(time: Date?, serialNum: Int, b: List<String>): SupplementDataStream?
    /**
     * æ ¹æ®ä¼ å…¥çš„列表,默认第一位为 [ObdDataType],返回对应的数据列表
src/main/kotlin/com/flightfeather/obd/socket/decoder/impl/DataUnitDecoderImpl.kt
@@ -4,11 +4,8 @@
import com.flightfeather.obd.socket.decoder.DataUnitDecoder
import com.flightfeather.obd.socket.decoder.RealTimeDataDecoder
import com.flightfeather.obd.socket.eunm.ObdDataType
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Component
import java.lang.StringBuilder
import java.util.*
import javax.annotation.PostConstruct
/**
 * @author riku
@@ -72,8 +69,8 @@
            if (data.isNotEmpty()) {
                val r = when (data[0].toInt(16)) {
                    ObdDataType.ObdData.value -> realTimeDataDecoder.getObdData(time, serialNum, data)
                    ObdDataType.EngineDataFlow.value -> realTimeDataDecoder.getEngineDataFlow(time, serialNum, data)
                    ObdDataType.SupplementDataFlow.value -> realTimeDataDecoder.getSupplementDataFlow(time, serialNum, data)
                    ObdDataType.EngineDataFlow.value -> realTimeDataDecoder.getEngineDataStream(time, serialNum, data)
                    ObdDataType.SupplementDataFlow.value -> realTimeDataDecoder.getSupplementDataStream(time, serialNum, data)
                    else -> null
                }
src/main/kotlin/com/flightfeather/obd/socket/decoder/impl/RealTimeDataDecoderImpl.kt
@@ -1,11 +1,10 @@
package com.flightfeather.obd.socket.decoder.impl
import com.flightfeather.obd.socket.bean.EngineDataFlow
import com.flightfeather.obd.socket.bean.EngineDataStream
import com.flightfeather.obd.socket.bean.ObdData
import com.flightfeather.obd.socket.bean.SupplementDataFlow
import com.flightfeather.obd.socket.bean.SupplementDataStream
import com.flightfeather.obd.socket.decoder.RealTimeDataDecoder
import com.flightfeather.obd.socket.eunm.ObdDataType
import org.springframework.stereotype.Component
import java.util.*
/**
@@ -53,7 +52,7 @@
                diagnosisSupportStatus = "${dataList[2]}${dataList[3]}".toIntOrNull(16)?.toString(2)
                diagnosisReadyStatus = "${dataList[4]}${dataList[5]}".toIntOrNull(16)?.toString(2)
                obdVin = vin.toString()
                obdSoftwareCode = softwareCode.toString()
                obdCrn = softwareCode.toString()
                obdCvn = cvn.toString()
                this.IUPR = IUPR.toString()
                obdFaultCodeNum = faultCodeNum
@@ -64,7 +63,7 @@
        }
    }
    override fun getEngineDataFlow(time: Date?, serialNum: Int, b: List<String>): EngineDataFlow? {
    override fun getEngineDataStream(time: Date?, serialNum: Int, b: List<String>): EngineDataStream? {
        val dataList = mutableListOf<String>().apply { addAll(b) }
        if (b.isNotEmpty()) {
            //去除 ä¿¡æ¯ç±»åž‹æ ‡å¿—
@@ -72,7 +71,7 @@
        }
        return if (dataList.size >= 37) {
             EngineDataFlow(time, serialNum).apply {
             EngineDataStream(time, serialNum).apply {
                obdSpeed = "${dataList[0]}${dataList[1]}".toIntOrNull(16)?.toDouble()?.times((1 / 256).toDouble())
                obdAirPressure = dataList[2].toIntOrNull(16)?.toDouble()?.times(0.5)
                obdEngineTorque = dataList[3].toIntOrNull(16)?.minus(125)?.toDouble()?.div(100)
@@ -98,7 +97,7 @@
        }
    }
    override fun getSupplementDataFlow(time: Date?, serialNum: Int, b: List<String>): SupplementDataFlow? {
    override fun getSupplementDataStream(time: Date?, serialNum: Int, b: List<String>): SupplementDataStream? {
        val dataList = mutableListOf<String>().apply { addAll(b) }
        if (b.isNotEmpty()) {
            //去除 ä¿¡æ¯ç±»åž‹æ ‡å¿—
@@ -106,7 +105,7 @@
        }
        return if (dataList.size >= 17) {
            SupplementDataFlow(time, serialNum).apply {
            SupplementDataStream(time, serialNum).apply {
                obdEngineTorqueMode = dataList[0].toIntOrNull(16)
                obdAcceleratorPedal = dataList[1].toIntOrNull(16)?.toDouble()?.times(0.4)?.div(100)
                obdTotalOilConsumption = "${dataList[2]}${dataList[3]}${dataList[4]}${dataList[5]}".toIntOrNull(16)?.toDouble()?.times(0.5)
src/main/kotlin/com/flightfeather/obd/socket/eunm/ObdDataType.kt
@@ -8,9 +8,9 @@
 * å®žæ—¶ä¿¡æ¯[RealTimeData]和补发信息[ReplacementData] ä¸­çš„æ•°æ®ç±»åž‹
 * ç±»åž‹ç¼–码                     è¯´æ˜Ž
 * 0x01                           OBD ä¿¡æ¯    @see [com.flightfeather.obd.socket.bean.ObdData]
 * 0x02                          æ•°æ®æµä¿¡æ¯  @see[com.flightfeather.obd.socket.bean.EngineDataFlow]
 * 0x02                          æ•°æ®æµä¿¡æ¯  @see[com.flightfeather.obd.socket.bean.EngineDataStream]
 * 0x03-0x7F                é¢„ç•™
 * 0x80                          è¡¥å……数据流   @see[com.flightfeather.obd.socket.bean.SupplementDataFlow]
 * 0x80                          è¡¥å……数据流   @see[com.flightfeather.obd.socket.bean.SupplementDataStream]
 * 0x81~0xFE                ç”¨æˆ·è‡ªå®šä¹‰
 */
enum class ObdDataType constructor(val value: Int){
src/test/kotlin/com/flightfeather/obd/socket/decoder/VehicleDataDecoderTest.kt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,117 @@
package com.flightfeather.obd.socket.decoder
import com.flightfeather.obd.domain.entity.ObdData
import com.flightfeather.obd.socket.bean.*
import com.flightfeather.obd.socket.eunm.ObdCommandUnit
import org.junit.Test
/**
 * @author riku
 * Date: 2019/9/17
 */
class VehicleDataDecoderTest {
    private val vehicleDataDecoder = VehicleDataDecoder()
    @Test
    fun decode() {
        val msg = "23 23 02 31 37 36 39 31 35 33 31 39 30 39 31 32 30 30 30 36 01 01 00 42 13 09 11 08 3b 36 02 00 3a 00 00 d4 00 00 12 c0 09 5e 00 c8 00 c8 00 15 a9 00 00 00 00 00 00 73 00 00 00 b9 1b c7 00 2e e1 24 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 dc"
        val msg2 = "23 23 02 31 37 36 39 31 35 33 31 39 30 39 31 32 30 30 30 36 01 01 00 42 13 09 11 08 3b 36 02 00 3b 00 00 d4 00 00 12 c0 09 5e 00 c8 00 c8 00 15 a9 00 00 00 00 00 00 73 00 00 00 b9 1b c7 00 2e e1 25 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 dc"
        val packageData = vehicleDataDecoder.decode(msg2)
        val obdData = ObdData().apply {
            obdVin = packageData.deviceCode
        }
        when (packageData.commandUnit) {
            ObdCommandUnit.CarRegister.value -> {
                packageData.dataUnit.forEach {
                    when (it) {
                        is CarRegisterData -> {
                            obdData.apply {
                                obdTime = it.time
                            }
                        }
                    }
                }
            }
            ObdCommandUnit.RealTimeData.value,
            ObdCommandUnit.ReplacementData.value -> {
                packageData.dataUnit.forEach {
                    when (it) {
                        is com.flightfeather.obd.socket.bean.ObdData -> {
                            obdData.apply {
                                obdTime = it.time
                                obdProtocol = it.obdProtocol
                                obdMil = it.obdMil
                                obdIdCode = it.obdCrn
                                obdVerificationCode = it.obdCvn
                                obdFaultCodeNum = it.obdFaultCodeNum
                                obdFaultCode = it.obdFaultCode
                            }
                        }
                        is EngineDataStream -> {
                            obdData.apply {
                                obdTime = it.time
                                obdLng = it.obdLong
                                obdLat = it.obdLat
                                obdSpeed = it.obdSpeed?.toInt()
                                obdAirPressure = it.obdAirPressure
                                obdEngineTorque = it.obdEngineTorque
                                obdFrictionTorque = it.obdFrictionTorque
                                obdEngineRpm = it.obdEngineRpm?.toInt()
                                obdStartFuelFlow = it.obdEngineFuelFlow
                                obdScrUpstreamNo = it.obdScrUpstreamNo
                                obdScrDownstreamNo = it.obdScrDownstreamNo
                                obdRemainReactant = it.obdRemainReactant
                                obdAirInput = it.obdAirInput
                                obdScrInputTemp = it.obdScrInputTemp
                                obdScrOutputTemp = it.obdScrOutputTemp
                                obdDpf = it.obdDpf
                                obdEngineCoolantTemp = it.obdEngineCoolantTemp
                                obdFuelLevel = it.obdFuelLevel
                                obdLocationStatus = it.obdLocationStatus
                                obdTotalMileage = it.obdTotalMileage
                            }
                        }
                        is SupplementDataStream -> {
                            obdData.apply {
                                obdTime = it.time
                                obdEngineTorqueMode = it.obdEngineTorqueMode?.toString()
                                obdAcceleratorPedal = it.obdAcceleratorPedal
                                obdTotalOilConsumption = it.obdTotalOilConsumption
                                obdUreaBoxTemp = it.obdUreaBoxTemp
                                obdUreaVolume = it.obdUreaVolume?.toInt()
                                obdTotalUreaConsume = it.obdTotalUreaConsume
                                obdDpfTemp = it.obdDpfTemp
//                                obdFirmwareVersion =
                            }
                        }
                    }
                }
            }
            ObdCommandUnit.CarLogOut.value -> {
                packageData.dataUnit.forEach {
                    when (it) {
                        is CarLogOutData -> {
                            obdData.apply {
                                obdTime = it.time
                            }
                        }
                    }
                }
            }
            ObdCommandUnit.TimeCalibration.value -> {
                packageData.dataUnit.forEach {
                    when (it) {
                        is TimeCalibrationData -> {
                            obdData.apply {
                                obdTime = it.time
                            }
                        }
                    }
                }
            }
        }
    }
}