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 + "]"; } }