package com.fbo2206;
|
|
import java.io.UnsupportedEncodingException;
|
import java.nio.ByteBuffer;
|
import java.util.Arrays;
|
|
import com.fbs9100.FBS_ComBase;
|
import com.fbs9100.FBS_Crc16;
|
import com.fbs9100.FBS_TestTime;
|
|
public class FBO_ReadData implements Cloneable{
|
public static final int BYTE_LEN = 651;
|
|
|
//quint8 NowFileName[MaxLength]; //当前电池组名
|
public int[] NowWorkType = new int[FBS_ComBase.BattGroupCountMax]; //当前工作类型
|
public int[] NowWorkState = new int[FBS_ComBase.BattGroupCountMax]; //当前工作状态
|
public int[] NowWarnState = new int[FBS_ComBase.BattGroupCountMax]; //当前告警状态
|
public FBS_TestTime m_TestTime = new FBS_TestTime(); //测试时长
|
public double[] NowOnlineVol = new double[FBS_ComBase.BattGroupCountMax]; //当前在线电压 0.1
|
public double[] NowGroupVol = new double[FBS_ComBase.BattGroupCountMax]; //当前组端电压 0.1
|
public int NowRLY_OK; //当前ROK状态
|
//quint16 NowVol; //当前电压
|
public double[] NowCur = new double[FBS_ComBase.BattGroupCountMax]; //当前电流 0.1
|
public double[] NowCap = new double[FBS_ComBase.BattGroupCountMax]; //当前容量 1
|
public double[] SingleVol = new double[FBS_ComBase.FBOMonomerCountMax]; //单体 0.001
|
public int CRC;
|
|
public FBO_ReadData clone() {
|
FBO_ReadData obj = null;
|
try
|
{
|
obj = (FBO_ReadData)super.clone();
|
}
|
catch(CloneNotSupportedException e)
|
{
|
e.printStackTrace();
|
}
|
return obj;
|
}
|
|
public boolean putByteBuffer(final ByteBuffer bf)
|
{
|
if(bf.limit() < BYTE_LEN) {
|
return false;
|
}
|
|
ByteBuffer tmpbuf = bf;
|
int crc0 = tmpbuf.getShort(BYTE_LEN-2) & 0xFFFF;
|
int crc1 = FBS_Crc16.CalCRC16(tmpbuf, BYTE_LEN-2);
|
|
if(crc0 != crc1) {
|
System.out.println(crc0+" == "+crc1);
|
return false;
|
}
|
tmpbuf.position(0);
|
for(int i = 0 ;i<FBS_ComBase.BattGroupCountMax;i++) {
|
NowWorkType[i] = FBS_ComBase.changeShortToInt(tmpbuf.get()); //当前工作类型
|
}
|
|
for(int i = 0 ;i<FBS_ComBase.BattGroupCountMax;i++) {
|
NowWorkState[i] = FBS_ComBase.changeShortToInt(tmpbuf.get()); //当前工作状态
|
}
|
|
for(int i = 0 ;i<FBS_ComBase.BattGroupCountMax;i++) {
|
NowWarnState[i] = FBS_ComBase.changeShortToInt(tmpbuf.get()); //当前告警状态
|
}
|
m_TestTime.putByteBuffer(tmpbuf); //测试时长
|
|
for(int i = 0 ;i<FBS_ComBase.BattGroupCountMax;i++) {
|
NowOnlineVol[i] = FBS_ComBase.changeShortToInt(tmpbuf.getShort())/10; //当前在线电压
|
}
|
|
for(int i = 0 ;i<FBS_ComBase.BattGroupCountMax;i++) {
|
NowGroupVol[i] = FBS_ComBase.changeShortToInt(tmpbuf.getShort())/10; //当前组端电压
|
}
|
|
NowRLY_OK = FBS_ComBase.changeShortToInt(tmpbuf.getShort());; //当前ROK状态
|
//quint16 NowVol; //当前电压
|
|
for(int i = 0 ;i<FBS_ComBase.BattGroupCountMax;i++) {
|
NowCur[i] = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/10; //当前电流
|
}
|
|
for(int i = 0 ;i<FBS_ComBase.BattGroupCountMax;i++) {
|
NowCap[i] = FBS_ComBase.changeShortToDouble(tmpbuf.getShort()); //当前容量
|
}
|
|
for(int i = 0 ;i<FBS_ComBase.BattGroupCountMax;i++) {
|
SingleVol[i] = FBS_ComBase.changeShortToDouble(tmpbuf.getShort())/1000; //当前容量
|
}
|
|
|
tmpbuf.compact();
|
tmpbuf.flip();
|
return true;
|
}
|
|
@Override
|
public String toString() {
|
return "FBO_ReadData [NowWorkType=" + Arrays.toString(NowWorkType) + ", NowWorkState="
|
+ Arrays.toString(NowWorkState) + ", NowWarnState=" + Arrays.toString(NowWarnState) + ", m_TestTime="
|
+ m_TestTime + ", NowOnlineVol=" + Arrays.toString(NowOnlineVol) + ", NowGroupVol="
|
+ Arrays.toString(NowGroupVol) + ", NowRLY_OK=" + NowRLY_OK + ", NowCur=" + Arrays.toString(NowCur)
|
+ ", NowCap=" + Arrays.toString(NowCap) + ", SingleVol=" + Arrays.toString(SingleVol) + "]";
|
}
|
|
|
|
|
}
|