Message01.java 2.58 KB
package com.bsth.socket.protocol;

import com.bsth.util.ConvertUtil;
import org.joda.time.DateTime;

import java.util.Arrays;

/**
 * @author Hill
 * 车辆登入
 */
public class Message01 implements IMessageBody {

	public static final byte COMMAND = 0x01;

	/**
	 * byte[6]
	 * 数据采集时间
	 */
	private long timestamp;

	/**
	 * 登入流水号
	 */
	private short loginSerialNo;

	/**
	 * string(20)
	 * sim卡iccid
	 */
	private String iccid;

	/**
	 * 可充电储能子系统数n
	 */
	private byte subSystemQuantity;

	/**
	 * 可充电储能子系统编码长度m
	 */
	private byte subSystemCodeLen;

	/**
	 * 可充电储能系统编码n*m
	 */
	private byte[] subBytes;
	
	@Override
	public void read(byte[] bytes) {
		// TODO Auto-generated method stub
		int idx = 0;
		timestamp = ConvertUtil.bytes2timestamp(bytes, idx); idx += 6;
		loginSerialNo = (short) ConvertUtil.bytes2int(bytes, idx, 2); idx += 2;
		iccid = ConvertUtil.ascii2string(bytes, idx, 20); idx += 20;
		subSystemQuantity = bytes[idx]; idx++;
		subSystemCodeLen = bytes[idx]; idx++;
		subBytes = Arrays.copyOfRange(bytes, idx, idx + subSystemQuantity * subSystemCodeLen);
	}
	
	@Override
	public byte[] write() {
		// TODO Auto-generated method stub
		return ConvertUtil.timestamp2bytes(timestamp);
	}

	public long getTimestamp() {
		return timestamp;
	}

	@Override
	public void setTimestamp(long timestamp) {
		this.timestamp = timestamp;
	}

	public short getLoginSerialNo() {
		return loginSerialNo;
	}

	public void setLoginSerialNo(short loginSerialNo) {
		this.loginSerialNo = loginSerialNo;
	}

	public String getIccid() {
		return iccid;
	}

	public void setIccid(String iccid) {
		this.iccid = iccid;
	}

	public byte getSubSystemQuantity() {
		return subSystemQuantity;
	}

	public void setSubSystemQuantity(byte subSystemQuantity) {
		this.subSystemQuantity = subSystemQuantity;
	}

	public byte getSubSystemCodeLen() {
		return subSystemCodeLen;
	}

	public void setSubSystemCodeLen(byte subSystemCodeLen) {
		this.subSystemCodeLen = subSystemCodeLen;
	}

	public byte[] getSubBytes() {
		return subBytes;
	}

	public void setSubBytes(byte[] subBytes) {
		this.subBytes = subBytes;
	}

	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();
		sb.append(" 数据采集时间:").append(new DateTime(timestamp).toString("yyyy-MM-dd HH:mm:ss"))
		.append(" 登入流水号:").append(loginSerialNo)
		.append(" iccid:").append(iccid)
		.append(" 可充电储能子系统数:").append(subSystemQuantity)
		.append(" 可充电储能子系统编码长度:").append(subSystemCodeLen);

		return sb.toString();
	}
}