package com.dev.fbs9100; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.Arrays; public class FBS9100_VCData { private final int BYTE_LEN = 1500; private final int BATTGROUP_COUNT = FBS9100_ComBase.BattGroupCountMax; private final int BASIC_LEN = 12 + 20*BATTGROUP_COUNT; public FBS9100_SysState m_SysState = new FBS9100_SysState(); public int dataType[] = {0xAA, 0xAA, 0xAA, 0xAA}; public int CRC = 0; public FBS9100_TestTime testTime = new FBS9100_TestTime(); public int battGroup = 1; public int battSum = 24; public int battGroupNum = 1; // public double onlinevol[] = new double[FBS9100_ComBase.BattGroupCountMax]; //ÔÚÏßµçѹ public double groupvol[] = new double[FBS9100_ComBase.BattGroupCountMax]; //×é¶Ëµçѹ public int battstate[] = new int[FBS9100_ComBase.BattGroupCountMax]; //³ä·Åµç״̬ 3 5 9 public double battcurr[] = new double[FBS9100_ComBase.BattGroupCountMax]; //µç³Ø×éµçÁ÷ public double battcap[] = new double[FBS9100_ComBase.BattGroupCountMax]; //µç³Ø×éÈÝÁ¿ public double batttemp[] = new double[FBS9100_ComBase.BattGroupCountMax]; //µç³Ø×éÎÂ¶È public int monMAX_num[] = new int[FBS9100_ComBase.BattGroupCountMax]; //×î´óµ¥Ìå±àºÅ public int monMIN_num[] = new int[FBS9100_ComBase.BattGroupCountMax]; //×îµÍ°´µ¥Ìå±àºÅ public double monvolMAX[] = new double[FBS9100_ComBase.BattGroupCountMax]; //×î´óµ¥Ìåµçѹ public double monvolMIN[] = new double[FBS9100_ComBase.BattGroupCountMax]; //×îµÍµ¥Ìåµçѹ public double vol[] = new double[FBS9100_ComBase.MonomerCountMax]; //µ¥Ìåµçѹ public FBS9100_VCData clone() { FBS9100_VCData obj = new FBS9100_VCData(); obj.m_SysState = (FBS9100_SysState) m_SysState.clone(); obj.dataType = dataType.clone(); obj.CRC = CRC; obj.testTime = testTime; obj.battGroup = battGroup; obj.battSum = battSum; obj.onlinevol = onlinevol.clone(); obj.groupvol = groupvol.clone(); obj.battstate = battstate.clone(); obj.battcurr = battcurr.clone(); obj.battcap = battcap.clone(); obj.batttemp = batttemp.clone(); obj.monMAX_num = monMAX_num.clone(); obj.monMIN_num = monMIN_num.clone(); obj.monvolMAX = monvolMAX.clone(); obj.monvolMIN = monvolMIN.clone(); obj.vol = vol.clone(); return obj; } public boolean putByteBuffer(final ByteBuffer bf) { if(bf.limit() < BASIC_LEN) return false; int battcount = bf.getShort(10); if(battcount > FBS9100_ComBase.MonomerCountMax) return false; ByteBuffer tmpbuf = bf; int crc0 = tmpbuf.getShort(4) & 0xFFFF; tmpbuf.putShort(4, (short) 0); int crc1 = FBS9100_Crc16.CalCRC16(tmpbuf, BASIC_LEN + 2*battcount); if(crc0 != crc1) return false; tmpbuf.position(0); for(int n=0; n<4; n++) dataType[n] = FBS9100_ComBase.changeByteToInt(tmpbuf.get()); CRC = FBS9100_ComBase.changeShortToInt(tmpbuf.getShort()); testTime.hour = FBS9100_ComBase.changeByteToInt(tmpbuf.get()); testTime.minute = FBS9100_ComBase.changeByteToInt(tmpbuf.get()); testTime.second = FBS9100_ComBase.changeByteToInt(tmpbuf.get()); battGroup = FBS9100_ComBase.changeByteToInt(tmpbuf.get()); battSum = FBS9100_ComBase.changeShortToInt(tmpbuf.getShort()); for(int n=0; n