package com.whyc.mcp;
|
|
import com.whyc.res.RES_Crc16;
|
import com.whyc.util.ComBase;
|
|
import java.nio.ByteBuffer;
|
import java.nio.ByteOrder;
|
public class FBSData {
|
|
public static final int BYTE_LEN = 5 + TestTime.BYTE_LEN+VolCurrData.BYTE_LEN + MVolData.BYTE_LEN;
|
|
public int dataType[] = new int[4]; //数据类型 见表1
|
public int CRC16;
|
public TestTime testTime; //已测试时间(HMS)
|
public int battGroup; //组数
|
public int battSum; //单体个数
|
public VolCurrData vcData;
|
public MVolData mvol;
|
|
public FBSData(int dataType) {
|
testTime = new TestTime();
|
vcData = new VolCurrData();
|
for(int i=0;i<this.dataType.length;i++) {
|
this.dataType[i] = dataType;
|
}
|
}
|
|
public boolean setData(byte[] databuf) {
|
boolean flag = true;
|
////System.out.println(databuf.length + "===" + BYTE_LEN);
|
////System.out.println(ComFn.bytesToHexString(databuf, databuf.length));
|
ByteBuffer bf = ByteBuffer.allocate(databuf.length + dataType.length);
|
bf.order(ByteOrder.LITTLE_ENDIAN);
|
bf.position(0);
|
if(databuf.length < (BYTE_LEN-MVolData.BYTE_LEN)) {
|
return flag;
|
}
|
for(int i = 0;i<dataType.length;i++) {
|
bf.put(ComBase.changeIntToByte(this.dataType[i]));
|
}
|
bf.put(databuf);
|
////System.out.println(ComFn.bytesToHexString(bf.array(), bf.array().length));
|
bf.flip();
|
|
CRC16 = ComBase.changeShortToInt(bf.getShort(4));
|
bf.putShort(4, ComBase.changeIntToShort(0));
|
int crc1 = RES_Crc16.CalCRC16(bf, bf.limit());
|
if(CRC16 != crc1) {
|
//System.err.println(CRC16 +"!="+ crc1);
|
return false;
|
}
|
bf.position(6);
|
|
testTime.setTestTime(bf); //已测试时间(HMS)
|
battGroup = ComBase.changeByteToInt(bf.get()); //组数
|
battSum = ComBase.changeShortToInt(bf.getShort()); //单体个数
|
|
mvol = new MVolData(battGroup*battSum);
|
bf.compact();
|
|
flag &= vcData.puByteBuffer(bf);
|
flag &= mvol.puByteBuffer(bf);
|
|
return flag;
|
|
}
|
|
public int[] getDataType() {
|
return dataType;
|
}
|
|
public void setDataType(int[] dataType) {
|
this.dataType = dataType;
|
}
|
|
public int getCRC16() {
|
return CRC16;
|
}
|
|
public void setCRC16(int CRC16) {
|
this.CRC16 = CRC16;
|
}
|
|
public TestTime getTestTime() {
|
return testTime;
|
}
|
|
public void setTestTime(TestTime testTime) {
|
this.testTime = testTime;
|
}
|
|
public int getBattGroup() {
|
return battGroup;
|
}
|
|
public void setBattGroup(int battGroup) {
|
this.battGroup = battGroup;
|
}
|
|
public int getBattSum() {
|
return battSum;
|
}
|
|
public void setBattSum(int battSum) {
|
this.battSum = battSum;
|
}
|
|
public VolCurrData getVcData() {
|
return vcData;
|
}
|
|
public void setVcData(VolCurrData vcData) {
|
this.vcData = vcData;
|
}
|
|
public MVolData getMvol() {
|
return mvol;
|
}
|
|
public void setMvol(MVolData mvol) {
|
this.mvol = mvol;
|
}
|
}
|