package com.fgkj.fbs5100;
|
|
import java.nio.ByteBuffer;
|
import java.nio.ByteOrder;
|
|
|
public class FBS5100_BattParam {
|
public static final int BYTE_LEN = 44; //常规BTS长度
|
|
public int op_cmd = 0;
|
|
public float STD_CAP;
|
public float STD_RES;
|
public int BattGroupCount; //电池组数(1~4)
|
public int EachGroupBattCount; //每组节数(1~15)
|
public float MonomerVol;
|
public float GroupVol;
|
public float BattTemp;
|
public float FloatChargeVol; //浮充电压 (0.1V, 1.8~28.8)
|
public float FloatChargeCurr; //浮充电流阈值(0.1A 0.5~20.0)
|
public float OnlineVolLow; //在线电压低阈值(0.1V 30.0~56.0)
|
public int GroupConnType;
|
|
public float JunChargeVol; //均充电压(0.1V, 30.0~56.0)
|
|
public int bakeup2;
|
public int bakeup3;
|
public int bakeup4;
|
public int bakeup5;
|
public int bakeup6;
|
public int bakeup7;
|
public int bakeup8;
|
public int bakeup9;
|
public int bakeup10;
|
|
public int CRC = 0;
|
|
/**
|
* 复制一个当前对象(引用不同);
|
*/
|
public FBS5100_BattParam clone()
|
{
|
FBS5100_BattParam obj = null;
|
try
|
{
|
obj = (FBS5100_BattParam)super.clone();
|
}
|
catch(CloneNotSupportedException e)
|
{
|
e.printStackTrace();
|
}
|
return obj;
|
}
|
|
/**
|
* 清空当前对象
|
*/
|
public void clear()
|
{
|
STD_CAP = 0.0f;
|
STD_RES = 0.0f;
|
BattGroupCount = 0;
|
EachGroupBattCount = 0;
|
MonomerVol = 0.0f;
|
GroupVol = 0.0f;
|
BattTemp = 0.0f;
|
FloatChargeVol = 0.0f;
|
FloatChargeCurr = 0.0f;
|
OnlineVolLow = 0.0f;
|
GroupConnType = 0;
|
|
JunChargeVol = 0f;
|
|
bakeup2 = 0;
|
bakeup3 = 0;
|
bakeup4 = 0;
|
bakeup5 = 0;
|
bakeup6 = 0;
|
bakeup7 = 0;
|
bakeup8 = 0;
|
bakeup9 = 0;
|
bakeup10 = 0;
|
|
CRC = 0;
|
}
|
|
|
/**
|
* 将bytebuffer中的数据取出放入该对象的属性中,并返回是否取出成功
|
*
|
* @param bf
|
* @return
|
*/
|
public boolean putByteBuffer(final ByteBuffer bf)
|
{
|
if(bf.limit() < BYTE_LEN) {
|
//System.out.println("长度错误");
|
return false;
|
}
|
ByteBuffer tmpbuf = bf;
|
int crc0 = tmpbuf.getShort(BYTE_LEN-2) & 0xFFFF;
|
int crc1 = FBS5100_Crc16.CalCRC16(tmpbuf, BYTE_LEN-2);
|
if(crc0 != crc1) {
|
System.out.println("FBS5100_BattParam" + crc0 + "==" + crc1);
|
return false;
|
}
|
tmpbuf.position(0);
|
STD_CAP = FBS5100_ComBase.changeShortToFloat(tmpbuf.getShort());
|
STD_RES = FBS5100_ComBase.changeShortToFloat(tmpbuf.getShort())*10;//uΩ
|
BattGroupCount = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
|
EachGroupBattCount = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
|
MonomerVol = FBS5100_ComBase.changeShortToFloat(tmpbuf.getShort())/10;
|
GroupVol = FBS5100_ComBase.changeShortToFloat(tmpbuf.getShort());
|
BattTemp = FBS5100_ComBase.changeShortToFloat(tmpbuf.getShort())/10;
|
FloatChargeVol = FBS5100_ComBase.changeShortToFloat(tmpbuf.getShort())/10;
|
FloatChargeCurr = FBS5100_ComBase.changeShortToFloat(tmpbuf.getShort())/10;
|
OnlineVolLow = FBS5100_ComBase.changeShortToFloat(tmpbuf.getShort())/10;
|
GroupConnType = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
|
|
JunChargeVol = FBS5100_ComBase.changeShortToFloat(tmpbuf.getShort())/10;
|
|
bakeup2 = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
|
bakeup3 = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
|
bakeup4 = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
|
bakeup5 = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
|
bakeup6 = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
|
bakeup7 = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
|
bakeup8 = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
|
bakeup9 = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
|
bakeup10 = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
|
|
|
CRC = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort());
|
|
tmpbuf.compact();
|
tmpbuf.flip();
|
//System.out.println(this);
|
return true;
|
}
|
|
|
/**
|
* 将数据放入bytebuffer中并返回
|
* @return
|
*/
|
public ByteBuffer getByteBuffer()
|
{
|
ByteBuffer bytebuffer = ByteBuffer.allocate(BYTE_LEN);
|
bytebuffer.order(ByteOrder.LITTLE_ENDIAN);
|
bytebuffer.putShort(FBS5100_ComBase.changeFloatToShort(STD_CAP));
|
bytebuffer.putShort(FBS5100_ComBase.changeFloatToShort(STD_RES/10));//uΩ
|
bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(BattGroupCount));
|
bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(EachGroupBattCount));
|
bytebuffer.putShort(FBS5100_ComBase.changeFloatToShort(MonomerVol*10));
|
bytebuffer.putShort(FBS5100_ComBase.changeFloatToShort(GroupVol));
|
bytebuffer.putShort(FBS5100_ComBase.changeFloatToShort(BattTemp*10));
|
bytebuffer.putShort(FBS5100_ComBase.changeFloatToShort(FloatChargeVol*10));
|
bytebuffer.putShort(FBS5100_ComBase.changeFloatToShort(FloatChargeCurr*10));
|
bytebuffer.putShort(FBS5100_ComBase.changeFloatToShort(OnlineVolLow*10));
|
bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(GroupConnType));
|
|
bytebuffer.putShort(FBS5100_ComBase.changeFloatToShort(JunChargeVol*10));
|
|
|
bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(bakeup2));
|
bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(bakeup3));
|
bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(bakeup4));
|
bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(bakeup5));
|
bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(bakeup6));
|
bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(bakeup7));
|
bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(bakeup8));
|
bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(bakeup9));
|
bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(bakeup10));
|
|
CRC = FBS5100_Crc16.CalCRC16(bytebuffer, bytebuffer.position());
|
bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(CRC));
|
|
bytebuffer.flip();
|
|
return bytebuffer;
|
}
|
|
@Override
|
public String toString() {
|
return "FBS5100_BattParam [STD_CAP=" + STD_CAP + ", STD_RES=" + STD_RES + ", BattGroupCount=" + BattGroupCount
|
+ ", EachGroupBattCount=" + EachGroupBattCount + ", MonomerVol=" + MonomerVol + ", GroupVol=" + GroupVol
|
+ ", BattTemp=" + BattTemp + ", FloatChargeVol=" + FloatChargeVol + ", FloatChargeCurr="
|
+ FloatChargeCurr + ", OnlineVolLow=" + OnlineVolLow + ", GroupConnType=" + GroupConnType
|
+ ", JunChargeVol=" + JunChargeVol + "]";
|
}
|
|
}
|