Message0280.java 6.09 KB
package com.bsth.socket.protocol;

import com.bsth.util.ConvertUtil;

/**
 * @author Hill
 * 扩展数据
 */
public class Message0280 implements IMessageBody02 {

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

	/**
	 * 自定义数据长度 1-65531
	 * 默认34
	 */
	private short customDataLen;

	/**
	 * 蓄电池电压 0-32
	 * 分辨率0.5v/bit
	 * 0xfe 异常
	 * 0xff 无效
	 */
	private byte storageBatteryVoltage;

	/**
	 * 左前轮胎压力 0-250
	 * 分辨率 4kPa
	 * 0xfe 异常
	 * 0xff 无效
	 */
	private byte lfTirePressure;

	/**
	 * 左前轮胎温度 0-250
	 * 分辨率 1℃
	 * 0xfe 异常
	 * 0xff 无效
	 */
	private byte lfTireTemp;

	/**
	 * 右前轮胎压力 0-250
	 * 分辨率 4kPa
	 * 0xfe 异常
	 * 0xff 无效
	 */
	private byte rfTirePressure;

	/**
	 * 右前轮胎温度 0-250
	 * 分辨率 1℃
	 * 0xfe 异常
	 * 0xff 无效
	 */
	private byte rfTireTemp;

	/**
	 * 左后轮胎1压力 0-250
	 * 分辨率 4kPa
	 * 0xfe 异常
	 * 0xff 无效
	 */
	private byte lrTirePressure1;

	/**
	 * 左后轮胎1温度 0-250
	 * 分辨率 1℃
	 * 0xfe 异常
	 * 0xff 无效
	 */
	private byte lrTireTemp1;

	/**
	 * 左后轮胎2压力 0-250
	 * 分辨率 4kPa
	 * 0xfe 异常
	 * 0xff 无效
	 */
	private byte lrTirePressure2;

	/**
	 * 左后轮胎2温度 0-250
	 * 分辨率 1℃
	 * 0xfe 异常
	 * 0xff 无效
	 */
	private byte lrTireTemp2;

	/**
	 * 右后轮胎1压力 0-250
	 * 分辨率 4kPa
	 * 0xfe 异常
	 * 0xff 无效
	 */
	private byte rrTirePressure1;

	/**
	 * 右后轮胎1温度 0-250
	 * 分辨率 1℃
	 * 0xfe 异常
	 * 0xff 无效
	 */
	private byte rrTireTemp1;

	/**
	 * 右后轮胎2压力 0-250
	 * 分辨率 4kPa
	 * 0xfe 异常
	 * 0xff 无效
	 */
	private byte rrTirePressure2;

	/**
	 * 右后轮胎2温度 0-250
	 * 分辨率 1℃
	 * 0xfe 异常
	 * 0xff 无效
	 */
	private byte rrTireTemp2;

	/**
	 * 无法定义
	 * 用了其中2,3位作为手刹状态
	 * 0无信号 1有信号 2异常 3无效
	 */
	private byte unknown;

	@Override
	public void read(byte[] bytes, int idx) {
		// TODO Auto-generated method stub
		infoType = bytes[idx]; idx++;
		customDataLen = (short) ConvertUtil.bytes2int(bytes, idx, 2); idx += 2;
		// 预留2
		idx += 2;
		storageBatteryVoltage = bytes[idx]; idx++;
		// 预留6
		idx += 6;
		lfTirePressure = bytes[idx]; idx++;
		lfTireTemp = bytes[idx]; idx++;
		rfTirePressure = bytes[idx]; idx++;
		rfTireTemp = bytes[idx]; idx++;
		lrTirePressure1 = bytes[idx]; idx++;
		lrTireTemp1 = bytes[idx]; idx++;
		lrTirePressure2 = bytes[idx]; idx++;
		lrTireTemp2 = bytes[idx]; idx++;
		rrTirePressure1 = bytes[idx]; idx++;
		rrTireTemp1 = bytes[idx]; idx++;
		rrTirePressure2 = bytes[idx]; idx++;
		rrTireTemp2 = bytes[idx]; idx++;
		// 预留15
		idx += 26;
		unknown = bytes[idx]; idx++;
	}

	@Override
	public int getByteLen() {
		return customDataLen + 3;
	}

	public byte getInfoType() {
		return infoType;
	}

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

	public short getCustomDataLen() {
		return customDataLen;
	}

	public void setCustomDataLen(short customDataLen) {
		this.customDataLen = customDataLen;
	}

	public byte getStorageBatteryVoltage() {
		return storageBatteryVoltage;
	}

	public void setStorageBatteryVoltage(byte storageBatteryVoltage) {
		this.storageBatteryVoltage = storageBatteryVoltage;
	}

	public byte getLfTirePressure() {
		return lfTirePressure;
	}

	public void setLfTirePressure(byte lfTirePressure) {
		this.lfTirePressure = lfTirePressure;
	}

	public byte getLfTireTemp() {
		return lfTireTemp;
	}

	public void setLfTireTemp(byte lfTireTemp) {
		this.lfTireTemp = lfTireTemp;
	}

	public byte getRfTirePressure() {
		return rfTirePressure;
	}

	public void setRfTirePressure(byte rfTirePressure) {
		this.rfTirePressure = rfTirePressure;
	}

	public byte getRfTireTemp() {
		return rfTireTemp;
	}

	public void setRfTireTemp(byte rfTireTemp) {
		this.rfTireTemp = rfTireTemp;
	}

	public byte getLrTirePressure1() {
		return lrTirePressure1;
	}

	public void setLrTirePressure1(byte lrTirePressure1) {
		this.lrTirePressure1 = lrTirePressure1;
	}

	public byte getLrTireTemp1() {
		return lrTireTemp1;
	}

	public void setLrTireTemp1(byte lrTireTemp1) {
		this.lrTireTemp1 = lrTireTemp1;
	}

	public byte getLrTirePressure2() {
		return lrTirePressure2;
	}

	public void setLrTirePressure2(byte lrTirePressure2) {
		this.lrTirePressure2 = lrTirePressure2;
	}

	public byte getLrTireTemp2() {
		return lrTireTemp2;
	}

	public void setLrTireTemp2(byte lrTireTemp2) {
		this.lrTireTemp2 = lrTireTemp2;
	}

	public byte getRrTirePressure1() {
		return rrTirePressure1;
	}

	public void setRrTirePressure1(byte rrTirePressure1) {
		this.rrTirePressure1 = rrTirePressure1;
	}

	public byte getRrTireTemp1() {
		return rrTireTemp1;
	}

	public void setRrTireTemp1(byte rrTireTemp1) {
		this.rrTireTemp1 = rrTireTemp1;
	}

	public byte getRrTirePressure2() {
		return rrTirePressure2;
	}

	public void setRrTirePressure2(byte rrTirePressure2) {
		this.rrTirePressure2 = rrTirePressure2;
	}

	public byte getRrTireTemp2() {
		return rrTireTemp2;
	}

	public void setRrTireTemp2(byte rrTireTemp2) {
		this.rrTireTemp2 = rrTireTemp2;
	}

	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();
		sb.append(" 信息类型: ").append(String.format("%02x", infoType))
		.append(" 自定义数据长度: ").append(customDataLen)
		.append(" 蓄电池电压: ").append(storageBatteryVoltage)
		.append(" 左前轮压力: ").append(lfTirePressure)
		.append(" 左前轮温度: ").append(lfTireTemp)
		.append(" 右前轮压力: ").append(rfTirePressure)
		.append(" 右前轮温度: ").append(rfTireTemp)
		.append(" 左后轮1压力: ").append(lrTirePressure1)
		.append(" 左后轮1温度: ").append(lrTireTemp1)
		.append(" 左后轮2压力: ").append(lrTirePressure2)
		.append(" 左后轮2温度: ").append(lrTireTemp2)
		.append(" 右后轮1压力: ").append(rrTirePressure1)
		.append(" 右后轮1温度: ").append(rrTireTemp1)
		.append(" 右后轮2压力: ").append(rrTirePressure2)
		.append(" 右后轮2温度: ").append(rrTireTemp2)
		.append(" 手刹状态: ").append(unknown);

		return sb.toString();
	}
}