package com.fgkj.bts; import java.nio.ByteBuffer; import java.nio.ByteOrder; /** * 核容参数 * @author DELL * */ public class BTS_DischargeParam implements Cloneable{ private final int BYTE_LEN = 44; //private final int BYTE_LEN = 45; public int op_cmd = 0; public int test_cmd = 0; public int HourRate = 0; public float DisCurr = 0; public float DisCap = 0; public int DisTime = 0; public float GroupVol_LOW = 0; public float MonomerVol_LOW = 0; public int MonomerLowCount = 0; public int BattGroupNum = 0; public int OnlineVolLowAction = 0; public int StaticTime = 0; public int DisTestCount = 0; public float DCVolHighLimit = 0; public float ChargeCurrSet = 0; public int bakeup3 = 0; public float MonomerTmp_High = 0; //温度上限 public float ChargeVolt = 0; //均充电压[0.1V](18~57.5) 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 BTS_DischargeParam clone() { BTS_DischargeParam obj = null; try { obj = (BTS_DischargeParam)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; bakeup3 = 0; MonomerTmp_High = 0; ChargeVolt = 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 = BTS_Crc16.CalCRC16(tmpbuf, BYTE_LEN-2); if(crc0 != crc1){ System.out.println("FBS9100_ParamDischarge:crc0:"+crc0+"===crc1:"+crc1); return false; } tmpbuf.position(0); HourRate = BTS_ComBase.changeShortToInt(tmpbuf.getShort()); DisCurr = (float)BTS_ComBase.changeShortToDouble(tmpbuf.getShort()); DisCap = (float)BTS_ComBase.changeShortToDouble(tmpbuf.getShort()); DisTime = BTS_ComBase.changeShortToInt(tmpbuf.getShort()); GroupVol_LOW = (float)BTS_ComBase.changeShortToDouble(tmpbuf.getShort())/10; MonomerVol_LOW = (float)BTS_ComBase.changeShortToDouble(tmpbuf.getShort())/1000; MonomerLowCount = BTS_ComBase.changeShortToInt(tmpbuf.getShort()); BattGroupNum = BTS_ComBase.changeShortToInt(tmpbuf.getShort()); OnlineVolLowAction = BTS_ComBase.changeShortToInt(tmpbuf.getShort()); StaticTime = BTS_ComBase.changeShortToInt(tmpbuf.getShort()); DisTestCount = BTS_ComBase.changeShortToInt(tmpbuf.getShort()); DCVolHighLimit = (float)BTS_ComBase.changeShortToDouble(tmpbuf.getShort())/10; ChargeCurrSet = (float)BTS_ComBase.changeShortToDouble(tmpbuf.getShort()); bakeup3 = BTS_ComBase.changeShortToInt(tmpbuf.getShort()); MonomerTmp_High = (float)BTS_ComBase.changeShortToDouble(tmpbuf.getShort())/10; ChargeVolt = (float)BTS_ComBase.changeShortToFloat(tmpbuf.getShort())/10; bakeup6 = BTS_ComBase.changeShortToInt(tmpbuf.getShort()); bakeup7 = BTS_ComBase.changeShortToInt(tmpbuf.getShort()); bakeup8 = BTS_ComBase.changeShortToInt(tmpbuf.getShort()); bakeup9 = BTS_ComBase.changeShortToInt(tmpbuf.getShort()); bakeup10 = BTS_ComBase.changeShortToInt(tmpbuf.getShort()); CRC = BTS_ComBase.changeShortToInt(tmpbuf.getShort()); tmpbuf.compact(); tmpbuf.flip(); return true; } public ByteBuffer getByteBuffer() { System.out.println(this); ByteBuffer bytebuffer = ByteBuffer.allocate(BYTE_LEN); bytebuffer.order(ByteOrder.LITTLE_ENDIAN); bytebuffer.putShort(BTS_ComBase.changeIntToShort(HourRate)); bytebuffer.putShort(BTS_ComBase.changeDoubleToShort(DisCurr)); bytebuffer.putShort(BTS_ComBase.changeDoubleToShort(DisCap)); bytebuffer.putShort(BTS_ComBase.changeIntToShort(DisTime)); //bytebuffer.putShort(BTS_ComBase.changeDoubleToShort((GroupVol_LOW+0.000001)*10)); bytebuffer.putShort(BTS_ComBase.changeFloatToShort((GroupVol_LOW)*10)); bytebuffer.putShort(BTS_ComBase.changeFloatToShort((MonomerVol_LOW)*1000)); bytebuffer.putShort(BTS_ComBase.changeIntToShort(MonomerLowCount)); bytebuffer.putShort(BTS_ComBase.changeIntToShort(BattGroupNum)); bytebuffer.putShort(BTS_ComBase.changeIntToShort(OnlineVolLowAction)); bytebuffer.putShort(BTS_ComBase.changeIntToShort(StaticTime)); bytebuffer.putShort(BTS_ComBase.changeIntToShort(DisTestCount)); bytebuffer.putShort(BTS_ComBase.changeFloatToShort((DCVolHighLimit)*10)); bytebuffer.putShort(BTS_ComBase.changeDoubleToShort(ChargeCurrSet)); bytebuffer.putShort(BTS_ComBase.changeDoubleToShort(bakeup3)); bytebuffer.putShort(BTS_ComBase.changeFloatToShort((MonomerTmp_High)*10)); bytebuffer.putShort(BTS_ComBase.changeFloatToShort((ChargeVolt)*10)); bytebuffer.putShort(BTS_ComBase.changeDoubleToShort(bakeup6)); bytebuffer.putShort(BTS_ComBase.changeDoubleToShort(bakeup7)); bytebuffer.putShort(BTS_ComBase.changeDoubleToShort(bakeup8)); bytebuffer.putShort(BTS_ComBase.changeDoubleToShort(bakeup9)); bytebuffer.putShort(BTS_ComBase.changeDoubleToShort(bakeup10)); CRC = BTS_Crc16.CalCRC16(bytebuffer, bytebuffer.position()); bytebuffer.putShort(BTS_ComBase.changeIntToShort(CRC)); //System.out.println(this+"$$$$$$$$$$$$$$$$$$$$$$$$$"); bytebuffer.flip(); return bytebuffer; } @Override public String toString() { return "FBS9100_ParamDischarge [BYTE_LEN=" + BYTE_LEN + ", op_cmd=" + op_cmd + ", test_cmd=" + test_cmd + ", 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 + ", bakeup3=" + bakeup3 + ", bakeup4=" + MonomerTmp_High + ", ChargeVolt=" + ChargeVolt + ", bakeup6=" + bakeup6 + ", bakeup7=" + bakeup7 + ", bakeup8=" + bakeup8 + ", bakeup9=" + bakeup9 + ", bakeup10=" + bakeup10 + ", CRC=" + CRC + "]"; } 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); BTS_ComBase.changeDoubleToShort((dd)*10); System.out.println((int)ff); } }