Message0201.java 5.28 KB
package com.bsth.socket.protocol;

import com.bsth.util.ConvertUtil;

/**
 * @author Hill
 * 整车数据
 */
public class Message0201 implements IMessageBody02 {

	/**
	 * 信息类型
	 * 默认应该为0x01
	 */
	private byte infoType;

	/**
	 * 车辆状态
	 * 0x01 车辆启动
	 * 0x02 车辆熄火
	 * 0x03 其它
	 * 0xFE 异常
	 * 0xFF 无效
	 */
	private byte vehicleState;

	/**
	 * 充电状态
	 * 0x01 停车充电
	 * 0x02 行驶充电
	 * 0x03 未充电
	 * 0x04 充电完成
	 * 0xFE 异常
	 * 0xFF 无效
	 */
	private byte chargeState;

	/**
	 * 运行模式
	 * 0x01 纯电
	 * 0x02 混动
	 * 0x03 燃油
	 * 0xFE 异常
	 * 0xFF 无效
	 */
	private byte runMode;

	/**
	 * 车速 0-2200
	 * 分辨率0.1km/h
	 * 0xff 0xfe 异常
	 * 0xff 0xff 无效
	 */
	private short speed;

	/**
	 * 累计里程 0-9999999
	 * 分辨率0.1km/h
	 * 0xff 0xff 0xff 0xfe 异常
	 * 0xff 0xff 0xff 0xff 无效
	 */
	private int totalMiles;

	/**
	 * 总电压 0-10000
	 * 分辨率0.1v
	 * 0xff 0xfe 异常
	 * 0xff 0xff 无效
	 */
	private short totalVoltage;

	/**
	 * 总电流 0-20000
	 * 分辨率0.1a
	 * 0xff 0xfe 异常
	 * 0xff 0xff 无效
	 */
	private short totalCurrent;

	/**
	 * soc 0-100%
	 * 分辨率1%
	 * 0xFE 异常
	 * 0xFF 无效
	 */
	private byte soc;

	/**
	 * dc-dc状态
	 * 0x01 工作
	 * 0x02 断开
	 * 0xFE 异常
	 * 0xFF 无效
	 */
	private byte dcState;

	/**
	 * 挡位
	 */
	private byte gear;

	/**
	 * 绝缘电阻 0-60000
	 * 分辨率 1k欧
	 */
	private short insulationResistance;

	/**
	 * 加速踏板行程值 0-100%
	 * 分辨率1%
	 * 0xFE 异常
	 * 0xFF 无效
	 */
	private byte acceleratorState;

	/**
	 * 制动踏板状态 0-100%
	 * 分辨率1% 在无具体行程值情况下,用“101”表示制动有效状态
	 * 0xFE 异常
	 * 0xFF 无效
	 */
	private byte brakePedalState;

	@Override
	public void read(byte[] bytes, int idx) {
		// TODO Auto-generated method stub
		infoType = bytes[idx]; idx++;
		vehicleState = bytes[idx]; idx++;
		chargeState = bytes[idx]; idx++;
		runMode = bytes[idx]; idx++;
		speed = (short) ConvertUtil.bytes2int(bytes, idx, 2); idx += 2;
		totalMiles = ConvertUtil.bytes2int(bytes, idx, 4); idx += 4;
		totalVoltage = (short) ConvertUtil.bytes2int(bytes, idx, 2); idx += 2;
		totalCurrent = (short) ConvertUtil.bytes2int(bytes, idx, 2); idx += 2;
		soc = bytes[idx]; idx++;
		dcState = bytes[idx]; idx++;
		gear = bytes[idx]; idx++;
		insulationResistance = (short) ConvertUtil.bytes2int(bytes, idx, 2); idx += 2;
		acceleratorState = bytes[idx]; idx++;
		brakePedalState = bytes[idx]; idx++;
	}

	@Override
	public int getByteLen() {
		return 21;
	}

	public byte getInfoType() {
		return infoType;
	}

	public void setInfoType(byte infoType) {
		this.infoType = infoType;
	}

	public byte getVehicleState() {
		return vehicleState;
	}

	public void setVehicleState(byte vehicleState) {
		this.vehicleState = vehicleState;
	}

	public byte getChargeState() {
		return chargeState;
	}

	public void setChargeState(byte chargeState) {
		this.chargeState = chargeState;
	}

	public byte getRunMode() {
		return runMode;
	}

	public void setRunMode(byte runMode) {
		this.runMode = runMode;
	}

	public short getSpeed() {
		return speed;
	}

	public void setSpeed(short speed) {
		this.speed = speed;
	}

	public int getTotalMiles() {
		return totalMiles;
	}

	public void setTotalMiles(int totalMiles) {
		this.totalMiles = totalMiles;
	}

	public short getTotalVoltage() {
		return totalVoltage;
	}

	public void setTotalVoltage(short totalVoltage) {
		this.totalVoltage = totalVoltage;
	}

	public short getTotalCurrent() {
		return totalCurrent;
	}

	public void setTotalCurrent(short totalCurrent) {
		this.totalCurrent = totalCurrent;
	}

	public byte getSoc() {
		return soc;
	}

	public void setSoc(byte soc) {
		this.soc = soc;
	}

	public byte getDcState() {
		return dcState;
	}

	public void setDcState(byte dcState) {
		this.dcState = dcState;
	}

	public byte getGear() {
		return gear;
	}

	public void setGear(byte gear) {
		this.gear = gear;
	}

	public short getInsulationResistance() {
		return insulationResistance;
	}

	public void setInsulationResistance(short insulationResistance) {
		this.insulationResistance = insulationResistance;
	}

	public byte getAcceleratorState() {
		return acceleratorState;
	}

	public void setAcceleratorState(byte acceleratorState) {
		this.acceleratorState = acceleratorState;
	}

	public byte getBrakePedalState() {
		return brakePedalState;
	}

	public void setBrakePedalState(byte brakePedalState) {
		this.brakePedalState = brakePedalState;
	}

	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();
		sb.append(" 信息类型: ").append(String.format("%02x", infoType))
		.append(" 车辆状态: ").append(vehicleState)
		.append(" 充电状态: ").append(chargeState)
		.append(" 运行模式: ").append(runMode)
		.append(" 车速: ").append(speed)
		.append(" 累计里程: ").append(totalMiles)
		.append(" 总电压: ").append(totalVoltage)
		.append(" 总电流: ").append(totalCurrent)
		.append(" soc: ").append(soc)
		.append(" dc-dc状态: ").append(dcState)
		.append(" 挡位: ").append(gear)
		.append(" 绝缘电阻: ").append(insulationResistance)
		.append(" 加速踏板行程值: ").append(acceleratorState)
		.append(" 制动踏板状态: ").append(brakePedalState);

		return sb.toString();
	}
}