package com.whyc.charge;
|
|
import com.whyc.dto.Fbs5100ComBase;
|
import com.whyc.dto.Fbs5100Crc16;
|
import com.whyc.dto.Fbs5100DateTime;
|
|
import java.nio.ByteBuffer;
|
import java.nio.ByteOrder;
|
import java.util.Arrays;
|
|
|
public class Fbs5100ChargeState {
|
public static final int BYTE_LEN = 120;
|
private final int BATTGROUP_COUNT = Fbs5100ComBase.BattGroupCountMax;
|
|
public Fbs5100DateTime StartDT = new Fbs5100DateTime(); //启动放电的日期时间
|
public Fbs5100DateTime StopDT = new Fbs5100DateTime(); //终止放电的日期时间
|
public Fbs5100TestTime Test_Time = new Fbs5100TestTime(); //已测试时间(HMS)
|
|
public int TestState; //测试状态(停止/暂停/放电)
|
public int TestType; //测试类型(放电/充电)
|
public int TestGroupNum; //被测试电池组编号(1~4)
|
public int SaveDataEN; //保存数据标识
|
public int ChargeEN; //开始充电标识
|
public int ChargeOverTime; //充电过流超时
|
public int LastCapTestAlarmRes; //上次容量放电测试结果
|
|
public double TestCur[] = new double[Fbs5100ComBase.BattGroupCountMax];
|
public double GroupVol[] = new double[Fbs5100ComBase.BattGroupCountMax];
|
public double OnlineVol[] = new double[Fbs5100ComBase.BattGroupCountMax];
|
public double TestCapInt[] = new double[Fbs5100ComBase.BattGroupCountMax];
|
public int MonMaxNum[] = new int[Fbs5100ComBase.BattGroupCountMax];
|
public int MonMinNum[] = new int[Fbs5100ComBase.BattGroupCountMax];
|
public double MonMaxValue[] = new double[Fbs5100ComBase.BattGroupCountMax];
|
public double MonMinValue[] = new double[Fbs5100ComBase.BattGroupCountMax];
|
|
public double TestCap[] = new double[Fbs5100ComBase.BattGroupCountMax]; //每组已测试容量
|
|
public int CRC;
|
|
public Fbs5100ChargeState clone()
|
{
|
Fbs5100ChargeState obj = null;
|
try
|
{
|
obj = (Fbs5100ChargeState)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 = Fbs5100Crc16.CalCRC16(tmpbuf, BYTE_LEN-2);
|
if(crc0 != crc1) {
|
//System.err.println("Fbs5100ChargeState:"+crc0+"=="+crc1);
|
//return false;
|
}
|
tmpbuf.position(0);
|
StartDT.year = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
StartDT.month = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
StartDT.day = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
StartDT.hour = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
StartDT.minute = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
StartDT.second = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
|
StopDT.year = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
StopDT.month = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
StopDT.day = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
StopDT.hour = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
StopDT.minute = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
StopDT.second = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
|
Test_Time.hour = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
Test_Time.minute = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
Test_Time.second = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
|
TestState = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
TestType = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
TestGroupNum = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
SaveDataEN = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
ChargeEN = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
ChargeOverTime = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
LastCapTestAlarmRes = Fbs5100ComBase.changeByteToInt(tmpbuf.get());
|
|
for(int n=0; n<BATTGROUP_COUNT; n++)
|
TestCur[n] = Fbs5100ComBase.changeShortToDouble(tmpbuf.getShort()) / 10;
|
|
for(int n=0; n<BATTGROUP_COUNT; n++)
|
GroupVol[n] = Fbs5100ComBase.changeShortToDouble(tmpbuf.getShort()) / 10;
|
|
for(int n=0; n<BATTGROUP_COUNT; n++)
|
OnlineVol[n] = Fbs5100ComBase.changeShortToDouble(tmpbuf.getShort()) / 10;
|
|
for(int n=0; n<BATTGROUP_COUNT; n++)
|
TestCapInt[n] = Fbs5100ComBase.changeShortToDouble(tmpbuf.getShort());
|
|
for(int n=0; n<BATTGROUP_COUNT; n++)
|
MonMaxNum[n] = Fbs5100ComBase.changeShortToInt(tmpbuf.getShort());
|
|
for(int n=0; n<BATTGROUP_COUNT; n++)
|
MonMinNum[n] = Fbs5100ComBase.changeShortToInt(tmpbuf.getShort());
|
|
for(int n=0; n<BATTGROUP_COUNT; n++)
|
MonMaxValue[n] = Fbs5100ComBase.changeShortToDouble(tmpbuf.getShort()) / 1000;
|
|
for(int n=0; n<BATTGROUP_COUNT; n++)
|
MonMinValue[n] = Fbs5100ComBase.changeShortToDouble(tmpbuf.getShort()) / 1000;
|
|
for(int n=0; n<BATTGROUP_COUNT; n++) {
|
TestCap[n] = tmpbuf.getDouble();
|
}
|
//System.out.println(this);
|
tmpbuf.compact();
|
tmpbuf.flip();
|
|
return true;
|
}
|
|
public ByteBuffer getByteBuffer()
|
{
|
ByteBuffer bytebuffer = ByteBuffer.allocate(BYTE_LEN);
|
bytebuffer.order(ByteOrder.LITTLE_ENDIAN);
|
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(StartDT.year));
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(StartDT.month));
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(StartDT.day));
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(StartDT.hour));
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(StartDT.minute));
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(StartDT.second));
|
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(StopDT.year));
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(StopDT.month));
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(StopDT.day));
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(StopDT.hour));
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(StopDT.minute));
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(StopDT.second));
|
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(Test_Time.hour));
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(Test_Time.minute));
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(Test_Time.second));
|
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(TestState));
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(TestType));
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(TestGroupNum));
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(SaveDataEN));
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(ChargeEN));
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(ChargeOverTime));
|
bytebuffer.put(Fbs5100ComBase.changeIntToByte(LastCapTestAlarmRes));
|
|
|
for(int n=0; n<BATTGROUP_COUNT; n++)
|
bytebuffer.putShort(Fbs5100ComBase.changeDoubleToShort(TestCur[n]*10));
|
|
for(int n=0; n<BATTGROUP_COUNT; n++)
|
bytebuffer.putShort(Fbs5100ComBase.changeDoubleToShort(GroupVol[n]*10));
|
|
for(int n=0; n<BATTGROUP_COUNT; n++)
|
bytebuffer.putShort(Fbs5100ComBase.changeDoubleToShort(OnlineVol[n]*10));
|
|
for(int n=0; n<BATTGROUP_COUNT; n++)
|
bytebuffer.putShort(Fbs5100ComBase.changeDoubleToShort(TestCapInt[n]));
|
|
for(int n=0; n<BATTGROUP_COUNT; n++)
|
bytebuffer.putShort(Fbs5100ComBase.changeIntToShort(MonMaxNum[n]));
|
|
for(int n=0; n<BATTGROUP_COUNT; n++)
|
bytebuffer.putShort(Fbs5100ComBase.changeIntToShort(MonMinNum[n]));
|
|
for(int n=0; n<BATTGROUP_COUNT; n++)
|
bytebuffer.putShort(Fbs5100ComBase.changeDoubleToShort(MonMaxValue[n]*1000));
|
|
for(int n=0; n<BATTGROUP_COUNT; n++)
|
bytebuffer.putShort(Fbs5100ComBase.changeDoubleToShort(MonMinValue[n]*1000));
|
|
CRC = Fbs5100Crc16.CalCRC16(bytebuffer, bytebuffer.capacity()-2);
|
bytebuffer.putShort(Fbs5100ComBase.changeIntToShort(CRC));
|
|
bytebuffer.flip();
|
//System.out.println("bytebuffer limit:"+bytebuffer.limit());
|
return bytebuffer;
|
}
|
|
@Override
|
public String toString() {
|
return "Fbs5100ChargeState [StartDT=" + StartDT + ", StopDT=" + StopDT + ", Test_Time=" + Test_Time
|
+ ", TestState=" + TestState + ", TestType=" + TestType + ", TestGroupNum=" + TestGroupNum
|
+ ", SaveDataEN=" + SaveDataEN + ", ChargeEN=" + ChargeEN + ", ChargeOverTime=" + ChargeOverTime
|
+ ", LastCapTestAlarmRes=" + LastCapTestAlarmRes + ", TestCur=" + Arrays.toString(TestCur)
|
+ ", GroupVol=" + Arrays.toString(GroupVol) + ", OnlineVol=" + Arrays.toString(OnlineVol)
|
+ ", TestCapInt=" + Arrays.toString(TestCapInt) + ", MonMaxNum=" + Arrays.toString(MonMaxNum)
|
+ ", MonMinNum=" + Arrays.toString(MonMinNum) + ", MonMaxValue=" + Arrays.toString(MonMaxValue)
|
+ ", MonMinValue=" + Arrays.toString(MonMinValue) + ", TestCap=" + Arrays.toString(TestCap) + "]";
|
}
|
|
|
}
|