Message0281.java 4.66 KB
package com.bsth.socket.protocol;

import com.bsth.util.ConvertUtil;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Hill
 * 车载终端秒采集10秒发送数据
 */
public class Message0281 implements IMessageBody02 {

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

	/**
	 * 车载终端每10秒数据
	 */
	private List<TenSecondsPerData> dataList = new ArrayList<>();

	@Override
	public void read(byte[] bytes, int idx) {
		// TODO Auto-generated method stub
		infoType = bytes[idx]; idx++;
		while (idx < bytes.length - 1) {
			TenSecondsPerData data = new TenSecondsPerData();
			data.read(bytes, idx); idx += TenSecondsPerData.BYTE_LEN;
			dataList.add(data);
		}
	}

	public byte getInfoType() {
		return infoType;
	}

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

	public List<TenSecondsPerData> getDataList() {
		return dataList;
	}

	public void setDataList(List<TenSecondsPerData> dataList) {
		this.dataList = dataList;
	}

	@Override
	public int getByteLen() {
		return 1 + dataList.size() * TenSecondsPerData.BYTE_LEN;
	}

	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();
		sb.append(" 信息类型: ").append(String.format("%02x", infoType));
		for (TenSecondsPerData data : dataList) {
			sb.append(data.toString());
		}

		return sb.toString();
	}

	public static class TenSecondsPerData {

		private final static int BYTE_LEN = 10;

		/**
		 * 加速踏板标识类型
		 * 默认应该为0x01
		 */
		private byte acceleratorFlag;

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

		/**
		 * 制动踏板标识类型
		 * 默认应该为0x02
		 */
		private byte brakePedalFlag;

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

		/**
		 * 车速标识类型
		 * 默认应该为0x03
		 */
		private byte speedFlag;

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

		/**
		 * 总电流标识类型
		 * 默认应该为0x04
		 */
		private byte totalCurrentFlag;

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

		public void read(byte[] bytes, int idx) {
			// TODO Auto-generated method stub
			acceleratorFlag = bytes[idx]; idx++;
			acceleratorState = bytes[idx]; idx++;
			brakePedalFlag = bytes[idx]; idx++;
			brakePedalState = bytes[idx]; idx++;
			speedFlag = bytes[idx]; idx++;
			speed = (short) ConvertUtil.bytes2int(bytes, idx, 2); idx += 2;
			totalCurrentFlag = bytes[idx]; idx++;
			totalCurrent = (short) ConvertUtil.bytes2int(bytes, idx, 2); idx += 2;
		}

		public byte getAcceleratorFlag() {
			return acceleratorFlag;
		}

		public void setAcceleratorFlag(byte acceleratorFlag) {
			this.acceleratorFlag = acceleratorFlag;
		}

		public byte getAcceleratorState() {
			return acceleratorState;
		}

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

		public byte getBrakePedalFlag() {
			return brakePedalFlag;
		}

		public void setBrakePedalFlag(byte brakePedalFlag) {
			this.brakePedalFlag = brakePedalFlag;
		}

		public byte getBrakePedalState() {
			return brakePedalState;
		}

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

		public byte getSpeedFlag() {
			return speedFlag;
		}

		public void setSpeedFlag(byte speedFlag) {
			this.speedFlag = speedFlag;
		}

		public short getSpeed() {
			return speed;
		}

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

		public byte getTotalCurrentFlag() {
			return totalCurrentFlag;
		}

		public void setTotalCurrentFlag(byte totalCurrentFlag) {
			this.totalCurrentFlag = totalCurrentFlag;
		}

		public short getTotalCurrent() {
			return totalCurrent;
		}

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

		@Override
		public String toString() {
			StringBuilder sb = new StringBuilder();
			sb.append(" 加速踏板标识类型: ").append(acceleratorFlag)
			.append(" 加速踏板行程值: ").append(acceleratorState)
			.append(" 制动踏板标识类型: ").append(brakePedalFlag)
			.append(" 制动踏板状态: ").append(brakePedalState)
			.append(" 车速标识类型: ").append(speedFlag)
			.append(" 车速: ").append(speed)
			.append(" 总电流标识类型: ").append(totalCurrentFlag)
			.append(" 总电流: ").append(totalCurrent)
			.append("\n");

			return sb.toString();
		}
	}
}