fix 修改报文解析

master
rouchen 2024-06-08 12:01:06 +08:00
parent 3c3e4d195d
commit 5dd19eedcd
2 changed files with 366 additions and 100 deletions

View File

@ -1,5 +1,7 @@
package com.muyu.utils; package com.muyu.utils;
import com.muyu.vehicle.MessageData;
import com.muyu.vehicle.VehicleData;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
@ -32,7 +34,7 @@ public class ConversionUtil {
// System.out.println(strToSixteen); // System.out.println(strToSixteen);
// System.out.println(strToSixteen.replace(" ", "").length()); // System.out.println(strToSixteen.replace(" ", "").length());
String hexStr = "7E 48 58 49 54 48 58 55 51 52 32 54 55 43 30 58 33 55 31 37 31 37 35 38 39 32 35 37 35 35 31 31 31 36 2e 37 36 34 36 35 30 30 33 39 2e 35 37 34 38 38 30 30 32 37 30 2e 30 30 32 30 2e 33 35 30 30 30 30 30 30 32 37 36 30 30 30 38 30 30 30 30 32 32 30 38 30 30 30 30 30 44 31 30 30 30 39 2e 30 30 30 33 32 30 30 30 30 34 34 37 34 39 37 38 36 30 31 30 39 30 30 30 32 32 32 30 30 35 32 38 34 30 30 30 30 37 35 38 38 34 2e 33 32 30 30 30 30 31 33 30 30 30 30 31 31 34 30 30 30 30 36 39 39 30 30 30 34 30 30 30 33 30 30 30 35 30 30 30 30 30 35 30 30 30 30 30 32 33 30 30 30 30 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 11 7E"; // String hexStr = "7E 48 58 49 54 48 58 55 51 52 32 54 55 43 30 58 33 55 31 37 31 37 35 38 39 32 35 37 35 35 31 31 31 36 2e 37 36 34 36 35 30 30 33 39 2e 35 37 34 38 38 30 30 32 37 30 2e 30 30 32 30 2e 33 35 30 30 30 30 30 30 32 37 36 30 30 30 38 30 30 30 30 32 32 30 38 30 30 30 30 30 44 31 30 30 30 39 2e 30 30 30 33 32 30 30 30 30 34 34 37 34 39 37 38 36 30 31 30 39 30 30 30 32 32 32 30 30 35 32 38 34 30 30 30 30 37 35 38 38 34 2e 33 32 30 30 30 30 31 33 30 30 30 30 31 31 34 30 30 30 30 36 39 39 30 30 30 34 30 30 30 33 30 30 30 35 30 30 30 30 30 35 30 30 30 30 30 32 33 30 30 30 30 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 11 7E";
String hexStringToString = hexStringToString(args); String hexStringToString = hexStringToString(args);
System.out.println(args); System.out.println(args);
System.out.println(args.length()); System.out.println(args.length());
@ -43,234 +45,283 @@ public class ConversionUtil {
log.error("substring:{}",substring.length()); log.error("substring:{}",substring.length());
//vin //vin
String vin = substring.substring(0,17); String vin = substring.substring(0,17);
log.error("length:{}",vin.length()); // log.error("length:{}",vin.length());
log.error("vin:{}",vin); // log.error("vin:{}",vin);
//时间戳 //时间戳
String timestamp = substring.substring(17,30); String timestamp = substring.substring(17,30);
log.error("length:{}",timestamp.length()); // log.error("length:{}",timestamp.length());
log.error("timestamp:{}",timestamp); // log.error("timestamp:{}",timestamp);
//经度 // //经度
String longitude = substring.substring(30, 41); String longitude = substring.substring(30, 41);
log.error("length:{}",longitude.length()); // log.error("length:{}",longitude.length());
log.error("longitude:{}",longitude); // log.error("longitude:{}",longitude);
//维度 // //维度
String latitude = substring.substring(41, 51); String latitude = substring.substring(41, 51);
log.error("length:{}",latitude.length()); // log.error("length:{}",latitude.length());
log.error("latitude:{}",latitude); // log.error("latitude:{}",latitude);
//车速 // //车速
String speed = substring.substring(51, 57); String speed = substring.substring(51, 57);
int length = speed.length(); int length = speed.length();
log.error("length:{}",length); // log.error("length:{}",length);
log.info("speed:{}",speed); // log.info("speed:{}",speed);
//总里程 //总里程
String mileage = substring.substring(57, 68); String mileage = substring.substring(57, 68);
log.error("length:{}",mileage.length()); // log.error("length:{}",mileage.length());
log.error("mileage:{}",mileage); // log.error("mileage:{}",mileage);
//总电压 //总电压
String dischargeVoltage = substring.substring(68, 74); String dischargeVoltage = substring.substring(68, 74);
log.error("length:{}",dischargeVoltage.length()); // log.error("length:{}",dischargeVoltage.length());
log.error("dischargeVoltage:{}",dischargeVoltage); // log.error("dischargeVoltage:{}",dischargeVoltage);
//总电流 //总电流
String dischargeCurrent = substring.substring(74, 79); String dischargeCurrent = substring.substring(74, 79);
log.error("length:{}",dischargeCurrent.length()); // log.error("length:{}",dischargeCurrent.length());
log.error("dischargeCurrent:{}",dischargeCurrent); // log.error("dischargeCurrent:{}",dischargeCurrent);
//绝缘电阻 //绝缘电阻
String insulationResistance = substring.substring(79, 88); String insulationResistance = substring.substring(79, 88);
log.error("length:{}",insulationResistance.length()); // log.error("length:{}",insulationResistance.length());
log.error("insulationResistance:{}",insulationResistance); // log.error("insulationResistance:{}",insulationResistance);
//档位 // //档位
String gear = substring.substring(88, 89); String gear = substring.substring(88, 89);
log.error("length:{}",gear.length()); // log.error("length:{}",gear.length());
log.error("gear:{}",gear); // log.error("gear:{}",gear);
//加速踏板行程值 //加速踏板行程值
String accelerationPedal = substring.substring(89, 91); String accelerationPedal = substring.substring(89, 91);
log.error("length:{}",accelerationPedal.length()); // log.error("length:{}",accelerationPedal.length());
log.error("accelerationPedal:{}",accelerationPedal); // log.error("accelerationPedal:{}",accelerationPedal);
//制动踏板行程值 //制动踏板行程值
String brakePedal = substring.substring(91, 93); String brakePedal = substring.substring(91, 93);
log.error("length:{}",brakePedal.length()); // log.error("length:{}",brakePedal.length());
log.error("brakePedal:{}",brakePedal); // log.error("brakePedal:{}",brakePedal);
//燃料消耗率 //燃料消耗率
String fuelConsumption = substring.substring(93, 98); String fuelConsumption = substring.substring(93, 98);
log.error("length:{}",fuelConsumption.length()); // log.error("length:{}",fuelConsumption.length());
log.error("fuelConsumption:{}",fuelConsumption); // log.error("fuelConsumption:{}",fuelConsumption);
//////////////// ////////////////
//电机控制器温度 //电机控制器温度
String motorControllerTemperature = substring.substring(98, 104); String motorControllerTemperature = substring.substring(98, 104);
log.error("length:{}",motorControllerTemperature.length()); // log.error("length:{}",motorControllerTemperature.length());
log.error("motorControllerTemperature:{}",motorControllerTemperature); // log.error("motorControllerTemperature:{}",motorControllerTemperature);
//电机转速 //电机转速
String motorSpeed = substring.substring(104, 109); String motorSpeed = substring.substring(104, 109);
log.error("length:{}",motorSpeed.length()); // log.error("length:{}",motorSpeed.length());
log.error("motorSpeed:{}",motorSpeed); // log.error("motorSpeed:{}",motorSpeed);
//电机转矩 //电机转矩
String motorTorque = substring.substring(109, 113); String motorTorque = substring.substring(109, 113);
log.error("length:{}",motorTorque.length()); // log.error("length:{}",motorTorque.length());
log.error("motorTorque:{}",motorTorque); // log.error("motorTorque:{}",motorTorque);
//电机温度 //电机温度
String motorTemperature = substring.substring(113, 119); String motorTemperature = substring.substring(113, 119);
log.error("length:{}",motorTemperature.length()); // log.error("length:{}",motorTemperature.length());
log.error("motorTemperature:{}",motorTemperature); // log.error("motorTemperature:{}",motorTemperature);
//电机电压 //电机电压
String motorVoltage = substring.substring(119, 124); String motorVoltage = substring.substring(119, 124);
log.error("length:{}",motorVoltage.length()); // log.error("length:{}",motorVoltage.length());
log.error("motorVoltage:{}",motorVoltage); // log.error("motorVoltage:{}",motorVoltage);
//电机电流 //电机电流
String motorCurrent = substring.substring(124, 132); String motorCurrent = substring.substring(124, 132);
log.error("length:{}",motorCurrent.length()); // log.error("length:{}",motorCurrent.length());
log.error("motorCurrent:{}",motorCurrent); // log.error("motorCurrent:{}",motorCurrent);
//动力电池剩余电量SOC //动力电池剩余电量SOC
String powerBattery = substring.substring(132, 138); String powerBattery = substring.substring(132, 138);
log.error("length:{}",powerBattery.length()); // log.error("length:{}",powerBattery.length());
log.error("powerBattery:{}",powerBattery); // log.error("powerBattery:{}",powerBattery);
//当前状态允许的最大反馈功率 //当前状态允许的最大反馈功率
String maxFeedbackPower = substring.substring(138, 144); String maxFeedbackPower = substring.substring(138, 144);
log.error("length:{}",maxFeedbackPower.length()); // log.error("length:{}",maxFeedbackPower.length());
log.error("maxFeedbackPower:{}",maxFeedbackPower); // log.error("maxFeedbackPower:{}",maxFeedbackPower);
//当前状态允许最大放电功率 //当前状态允许最大放电功率
String maxDischargePower = substring.substring(144, 150); String maxDischargePower = substring.substring(144, 150);
log.error("length:{}",maxDischargePower.length()); // log.error("length:{}",maxDischargePower.length());
log.error("maxDischargePower:{}",maxDischargePower); // log.error("maxDischargePower:{}",maxDischargePower);
//BMS自检计数器 //BMS自检计数器
String bmsSelfCheck = substring.substring(150, 152); String bmsSelfCheck = substring.substring(150, 152);
log.error("length:{}",bmsSelfCheck.length()); // log.error("length:{}",bmsSelfCheck.length());
log.error("bmsSelfCheck:{}",bmsSelfCheck); // log.error("bmsSelfCheck:{}",bmsSelfCheck);
//动力电池充放电电流 //动力电池充放电电流
String powerBatteryCurrent = substring.substring(152, 157); String powerBatteryCurrent = substring.substring(152, 157);
log.error("length:{}",powerBatteryCurrent.length()); // log.error("length:{}",powerBatteryCurrent.length());
log.error("powerBatteryCurrent:{}",powerBatteryCurrent); // log.error("powerBatteryCurrent:{}",powerBatteryCurrent);
//动力电池负载端总电压V3 //动力电池负载端总电压V3
String powerBatteryV3 = substring.substring(157, 163); String powerBatteryV3 = substring.substring(157, 163);
log.error("length:{}",powerBatteryV3.length()); // log.error("length:{}",powerBatteryV3.length());
log.error("powerBatteryV3:{}",powerBatteryV3); // log.error("powerBatteryV3:{}",powerBatteryV3);
//单次最大电压 //单次最大电压
String maxVoltage = substring.substring(163, 167); String maxVoltage = substring.substring(163, 167);
log.error("length:{}",maxVoltage.length()); // log.error("length:{}",maxVoltage.length());
log.error("maxVoltage:{}",maxVoltage); // log.error("maxVoltage:{}",maxVoltage);
//单体电池最低电压 //单体电池最低电压
String minVoltage = substring.substring(167, 171); String minVoltage = substring.substring(167, 171);
log.error("length:{}",minVoltage.length()); // log.error("length:{}",minVoltage.length());
log.error("minVoltage:{}",minVoltage); // log.error("minVoltage:{}",minVoltage);
//单体电池最高温度 //单体电池最高温度
String maxTemperature = substring.substring(171, 177); String maxTemperature = substring.substring(171, 177);
log.error("length:{}",maxTemperature.length()); // log.error("length:{}",maxTemperature.length());
log.error("maxTemperature:{}",maxTemperature); // log.error("maxTemperature:{}",maxTemperature);
//单体电池最低温度 //单体电池最低温度
String minTemperature = substring.substring(177, 183); String minTemperature = substring.substring(177, 183);
log.error("length:{}",minTemperature.length()); // log.error("length:{}",minTemperature.length());
log.error("minTemperature:{}",minTemperature); // log.error("minTemperature:{}",minTemperature);
//动力电池可用容量 //动力电池可用容量
String availableCapacity = substring.substring(183, 189); String availableCapacity = substring.substring(183, 189);
log.error("length:{}",availableCapacity.length()); // log.error("length:{}",availableCapacity.length());
log.error("availableCapacity:{}",availableCapacity); // log.error("availableCapacity:{}",availableCapacity);
//车辆状态 //车辆状态
String vehicleStatus = substring.substring(189, 190); String vehicleStatus = substring.substring(189, 190);
log.error("length:{}",vehicleStatus.length()); // log.error("length:{}",vehicleStatus.length());
log.error("vehicleStatus:{}",vehicleStatus); // log.error("vehicleStatus:{}",vehicleStatus);
//充电状态 //充电状态
String chargeStatus = substring.substring(190, 191); String chargeStatus = substring.substring(190, 191);
log.error("length:{}",chargeStatus.length()); // log.error("length:{}",chargeStatus.length());
log.error("chargeStatus:{}",chargeStatus); // log.error("chargeStatus:{}",chargeStatus);
//运行状态 //运行状态
String runStatus = substring.substring(191, 192); String runStatus = substring.substring(191, 192);
log.error("length:{}",runStatus.length()); // log.error("length:{}",runStatus.length());
log.error("runStatus:{}",runStatus); // log.error("runStatus:{}",runStatus);
//SOC //SOC
String soc = substring.substring(192, 193); String soc = substring.substring(192, 193);
log.error("length:{}",soc.length()); // log.error("length:{}",soc.length());
log.error("soc:{}",soc); // log.error("soc:{}",soc);
//可充电储能装置工作状态 //可充电储能装置工作状态
String chargeWorkStatus = substring.substring(193, 194); String chargeWorkStatus = substring.substring(193, 194);
log.error("length:{}",chargeWorkStatus.length()); // log.error("length:{}",chargeWorkStatus.length());
log.error("chargeWorkStatus:{}",chargeWorkStatus); // log.error("chargeWorkStatus:{}",chargeWorkStatus);
//驱动电机状态 //驱动电机状态
String driveMotorStatus = substring.substring(194, 195); String driveMotorStatus = substring.substring(194, 195);
log.error("length:{}",driveMotorStatus.length()); // log.error("length:{}",driveMotorStatus.length());
log.error("driveMotorStatus:{}",driveMotorStatus); // log.error("driveMotorStatus:{}",driveMotorStatus);
//定位是否有效 //定位是否有效
String location = substring.substring(195, 196); String location = substring.substring(195, 196);
log.error("length:{}",location.length()); // log.error("length:{}",location.length());
log.error("location:{}",location); // log.error("location:{}",location);
//EAS //EAS
String eas = substring.substring(196, 197); String eas = substring.substring(196, 197);
log.error("length:{}",eas.length()); // log.error("length:{}",eas.length());
log.error("eas:{}",eas); // log.error("eas:{}",eas);
//PTC //PTC
String ptc = substring.substring(197, 198); String ptc = substring.substring(197, 198);
log.error("length:{}",ptc.length()); // log.error("length:{}",ptc.length());
log.error("ptc:{}",ptc); // log.error("ptc:{}",ptc);
//EPS //EPS
String eps = substring.substring(198, 199); String eps = substring.substring(198, 199);
log.error("length:{}",eps.length()); // log.error("length:{}",eps.length());
log.error("eps:{}",eps); // log.error("eps:{}",eps);
//ABS //ABS
String abs = substring.substring(199, 200); String abs = substring.substring(199, 200);
log.error("length:{}",abs.length()); // log.error("length:{}",abs.length());
log.error("abs:{}",abs); // log.error("abs:{}",abs);
//MCU //MCU
String mcu = substring.substring(200, 201); String mcu = substring.substring(200, 201);
log.error("length:{}",mcu.length()); // log.error("length:{}",mcu.length());
log.error("mcu:{}",mcu); // log.error("mcu:{}",mcu);
//动力电池加热状态 //动力电池加热状态
String powerBatteryHeating = substring.substring(201, 202); String powerBatteryHeating = substring.substring(201, 202);
log.error("length:{}",powerBatteryHeating.length()); // log.error("length:{}",powerBatteryHeating.length());
log.error("powerBatteryHeating:{}",powerBatteryHeating); // log.error("powerBatteryHeating:{}",powerBatteryHeating);
//动力电池当前状态 //动力电池当前状态
String powerBatteryCurrentStatus = substring.substring(202, 203); String powerBatteryCurrentStatus = substring.substring(202, 203);
log.error("length:{}",powerBatteryCurrentStatus.length()); // log.error("length:{}",powerBatteryCurrentStatus.length());
log.error("powerBatteryCurrentStatus:{}",powerBatteryCurrentStatus); // log.error("powerBatteryCurrentStatus:{}",powerBatteryCurrentStatus);
//动力电池保温状态 //动力电池保温状态
String powerBatteryHeat = substring.substring(203, 204); String powerBatteryHeat = substring.substring(203, 204);
log.error("length:{}",powerBatteryHeat.length()); // log.error("length:{}",powerBatteryHeat.length());
log.error("powerBatteryHeat:{}",powerBatteryHeat); // log.error("powerBatteryHeat:{}",powerBatteryHeat);
//DCDC //DCDC
String dcdc = substring.substring(204, 205); String dcdc = substring.substring(204, 205);
log.error("length:{}",dcdc.length()); // log.error("length:{}",dcdc.length());
log.error("dcdc:{}",dcdc); // log.error("dcdc:{}",dcdc);
//CHG //CHG
String chg = substring.substring(205, 206); String chg = substring.substring(205, 206);
log.error("length:{}",chg.length()); // log.error("length:{}",chg.length());
log.error("chg:{}",chg); // log.error("chg:{}",chg);
MessageData build = MessageData.builder()
.vin(vin)
.timestamp(timestamp)
.longitude(longitude)
.latitude(latitude)
.speed(speed)
.mileage(mileage)
.dischargeVoltage(dischargeVoltage)
.dischargeCurrent(dischargeCurrent)
.insulationResistance(insulationResistance)
.gear(gear)
.accelerationPedal(accelerationPedal)
.brakePedal(brakePedal)
.fuelConsumption(fuelConsumption)
.motorControllerTemperature(motorControllerTemperature)
.motorSpeed(motorSpeed)
.motorTorque(motorTorque)
.motorTemperature(motorTemperature)
.motorVoltage(motorVoltage)
.motorCurrent(motorCurrent)
.powerBattery(powerBattery)
.maxFeedbackPower(maxFeedbackPower)
.maxDischargePower(maxDischargePower)
.bmsSelfCheck(bmsSelfCheck)
.powerBatteryCurrent(powerBatteryCurrent)
.powerBatteryV3(powerBatteryV3)
.maxVoltage(maxVoltage)
.minVoltage(minVoltage)
.maxTemperature(maxTemperature)
.minTemperature(minTemperature)
.availableCapacity(availableCapacity)
.vehicleStatus(vehicleStatus)
.chargeStatus(chargeStatus)
.runStatus(runStatus)
.soc(soc)
.chargeWorkStatus(chargeWorkStatus)
.driveMotorStatus(driveMotorStatus)
.location(location)
.eas(eas)
.ptc(ptc)
.eps(eps)
.abs(abs)
.mcu(mcu)
.powerBatteryHeating(powerBatteryHeating)
.powerBatteryCurrentStatus(powerBatteryCurrentStatus)
.powerBatteryHeat(powerBatteryHeat)
.dcdc(dcdc)
.chg(chg)
.build();
log.error("报文解析:{}",build);
System.out.println(hexStringToString.length()); System.out.println(hexStringToString.length());
} }

View File

@ -0,0 +1,215 @@
package com.muyu.vehicle;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* MessageData
*
* @author Yangle
* Date 2024/6/7 17:15
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
public class MessageData {
/**
*vin
*/
private String vin;
/**
*
*/
private String timestamp;
/**
*
*/
private String longitude;
/**
*
*/
private String latitude;
/**
*
*/
private String speed;
/**
*
*/
private String mileage;
/**
*
*/
private String dischargeVoltage;
/**
*
*/
private String dischargeCurrent;
/**
*
*/
private String insulationResistance;
/**
*
*/
private String gear;
/**
*
*/
private String accelerationPedal;
/**
*
*/
private String brakePedal;
/**
*
*/
private String fuelConsumption;
/**
*
*/
private String motorControllerTemperature;
/**
*
*/
private String motorSpeed;
/**
*
*/
private String motorTorque;
/**
*
*/
private String motorTemperature;
/**
*
*/
private String motorVoltage;
/**
*
*/
private String motorCurrent;
/**
*SOC
*/
private String powerBattery;
/**
*
*/
private String maxFeedbackPower;
/**
*
*/
private String maxDischargePower;
/**
*BMS
*/
private String bmsSelfCheck;
/**
*
*/
private String powerBatteryCurrent;
/**
*V3
*/
private String powerBatteryV3;
/**
*
*/
private String maxVoltage;
/**
*
*/
private String minVoltage;
/**
*
*/
private String maxTemperature;
/**
*
*/
private String minTemperature;
/**
*
*/
private String availableCapacity;
/**
*
*/
private String vehicleStatus;
/**
*
*/
private String chargeStatus;
/**
*
*/
private String runStatus;
/**
*SOC
*/
private String soc;
/**
*
*/
private String chargeWorkStatus;
/**
*
*/
private String driveMotorStatus;
/**
*
*/
private String location;
/**
*EAS
*/
private String eas;
/**
*PTC
*/
private String ptc;
/**
*EPS
*/
private String eps;
/**
*ABS
*/
private String abs;
/**
*MCU
*/
private String mcu;
/**
*
*/
private String powerBatteryHeating;
/**
*
*/
private String powerBatteryCurrentStatus;
/**
*
*/
private String powerBatteryHeat;
/**
*DCDC
*/
private String dcdc;
/**
*CHG
*/
private String chg;
}