package com.fgkj.fbs5100; import java.nio.ByteBuffer; import java.nio.ByteOrder; public class FBS5100_TestParam { public static final int BYTE_LEN = 44; //private final int BYTE_LEN = 45; public int HourRate = 0; //小时率 public float DisCurr = 0; //放电电流A(1~50) public float DisCap = 0; //放电容量AH(10~9999) public int DisTime = 0; //放电时长Min(1~9999) public float GroupVol_LOW = 0; //组端下限(0.1V 18~28.8) public float MonomerVol_LOW = 0; //单体电压下限 public int MonomerLowCount = 0; //单体下限数量 public int BattGroupNum = 0; //组号 [0-全组一起测试 1~4分别代表单组放电] public int OnlineVolLowAction = 0; //在线电压低处理 public int StaticTime = 0; //静置时间 public int DisTestCount = 0; //放电测试次数 public float DCVolHighLimit = 0; //升压上限(0.1V 48.0~54.0) public float ChargeCurrSet = 0; //充电电流(1~50A) public int DisTestType = 0; //放电测试类型 public float MonomerTmp_High = 0; //单体温度上限 public int bakeup5 = 0; public int bakeup6 = 0; public int bakeup7 = 0; public int bakeup8 = 0; public int bakeup9 = 0; public int bakeup10 = 0; public int CRC = 0; public FBS5100_TestParam clone() { FBS5100_TestParam obj = null; try { obj = (FBS5100_TestParam)super.clone(); } catch(CloneNotSupportedException e) { e.printStackTrace(); } return obj; } public void clear() { HourRate = 0; DisCurr = 0; DisCap = 0; DisTime = 0; GroupVol_LOW = 0; MonomerVol_LOW = 0; MonomerLowCount = 0; BattGroupNum = 0; OnlineVolLowAction = 0; StaticTime = 0; DisTestCount = 0; DCVolHighLimit = 0; ChargeCurrSet = 0; DisTestType = 0; MonomerTmp_High = 0; bakeup5 = 0; bakeup6 = 0; bakeup7 = 0; bakeup8 = 0; bakeup9 = 0; bakeup10 = 0; CRC = 0; } 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 = FBS5100_Crc16.CalCRC16(tmpbuf, BYTE_LEN-2); if(crc0 != crc1){ System.out.println("FBS5100_TestParam:" + crc0 + "===" + crc1); return false; } tmpbuf.position(0); HourRate = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort()); DisCurr = (float)FBS5100_ComBase.changeShortToDouble(tmpbuf.getShort()); DisCap = (float)FBS5100_ComBase.changeShortToDouble(tmpbuf.getShort()); DisTime = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort()); GroupVol_LOW = (float)FBS5100_ComBase.changeShortToDouble(tmpbuf.getShort())/10; MonomerVol_LOW = (float)FBS5100_ComBase.changeShortToDouble(tmpbuf.getShort())/1000; MonomerLowCount = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort()); BattGroupNum = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort()); OnlineVolLowAction = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort()); StaticTime = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort()); DisTestCount = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort()); DCVolHighLimit = (float)FBS5100_ComBase.changeShortToDouble(tmpbuf.getShort())/10; ChargeCurrSet = (float)FBS5100_ComBase.changeShortToDouble(tmpbuf.getShort()); DisTestType = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort()); MonomerTmp_High = (float)FBS5100_ComBase.changeShortToDouble(tmpbuf.getShort())/10; 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; } public ByteBuffer getByteBuffer() { System.out.println(this); ByteBuffer bytebuffer = ByteBuffer.allocate(BYTE_LEN); bytebuffer.order(ByteOrder.LITTLE_ENDIAN); bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(HourRate)); bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(DisCurr)); bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(DisCap)); bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(DisTime)); //bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort((GroupVol_LOW+0.000001)*10)); bytebuffer.putShort(FBS5100_ComBase.changeFloatToShort((GroupVol_LOW)*10)); bytebuffer.putShort(FBS5100_ComBase.changeFloatToShort((MonomerVol_LOW)*1000)); bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(MonomerLowCount)); bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(BattGroupNum)); bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(OnlineVolLowAction)); bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(StaticTime)); bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(DisTestCount)); bytebuffer.putShort(FBS5100_ComBase.changeFloatToShort((DCVolHighLimit)*10)); bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(ChargeCurrSet)); bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(DisTestType)); bytebuffer.putShort(FBS5100_ComBase.changeFloatToShort((MonomerTmp_High)*10)); bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(bakeup5)); bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(bakeup6)); bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(bakeup7)); bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(bakeup8)); bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(bakeup9)); bytebuffer.putShort(FBS5100_ComBase.changeDoubleToShort(bakeup10)); CRC = FBS5100_Crc16.CalCRC16(bytebuffer, bytebuffer.position()); bytebuffer.putShort(FBS5100_ComBase.changeIntToShort(CRC)); //System.out.println(this+"$$$$$$$$$$$$$$$$$$$$$$$$$"); bytebuffer.flip(); return bytebuffer; } @Override public String toString() { return "FBS5100_TestParam [HourRate=" + HourRate + ", DisCurr=" + DisCurr + ", DisCap=" + DisCap + ", DisTime=" + DisTime + ", GroupVol_LOW=" + GroupVol_LOW + ", MonomerVol_LOW=" + MonomerVol_LOW + ", MonomerLowCount=" + MonomerLowCount + ", BattGroupNum=" + BattGroupNum + ", OnlineVolLowAction=" + OnlineVolLowAction + ", StaticTime=" + StaticTime + ", DisTestCount=" + DisTestCount + ", DCVolHighLimit=" + DCVolHighLimit + ", ChargeCurrSet=" + ChargeCurrSet + ", DisTestType=" + DisTestType + ", MonomerTmp_High=" + MonomerTmp_High + "]"; } public static void main(String[] args) { double d = 56.6; float f = (float)d; float ff = (56.6f)*10; System.err.println(f); double dd = 56.6; System.out.println("dd:"+dd); FBS5100_ComBase.changeDoubleToShort((dd)*10); System.out.println((int)ff); } }