package com.fgkj.bts; import java.nio.ByteBuffer; import java.nio.ByteOrder; import com.fgkj.data.ComFn; /** * 充电状态 * @author DELL * */ public class BTS_ChargeState implements Cloneable{ private final int BYTE_LEN = 120 + 32; private final int BATTGROUP_COUNT = BTS_ComBase.BattGroupCountMax; public BTS_DateTime StartDT = new BTS_DateTime(); //启动放电的日期时间 public BTS_DateTime StopDT = new BTS_DateTime(); //终止放电的日期时间 public BTS_TestTime Test_Time = new BTS_TestTime(); //已测试时间(HMS) public int TestState; //测试状态(停止/暂停/放电) public int TestType; //测试类型(放电/充电) public int TestGroupNum; //被测试电池组编号(1~4) public int SaveDataEN; //保存数据标识 public int ChargeEN; //开始充电标识 public int ChargeOverTime; //充电过流超时 public int LastCapTestAlarmRes; //上次容量放电测试结果 public double TestCur[] = new double[BTS_ComBase.BattGroupCountMax]; public double GroupVol[] = new double[BTS_ComBase.BattGroupCountMax]; public double OnlineVol[] = new double[BTS_ComBase.BattGroupCountMax]; public double TestCapInt[] = new double[BTS_ComBase.BattGroupCountMax]; public int MonMaxNum[] = new int[BTS_ComBase.BattGroupCountMax]; public int MonMinNum[] = new int[BTS_ComBase.BattGroupCountMax]; public double MonMaxValue[] = new double[BTS_ComBase.BattGroupCountMax]; public double MonMinValue[] = new double[BTS_ComBase.BattGroupCountMax]; public double TestCap[] = new double[BTS_ComBase.BattGroupCountMax]; //每组已测试容量 public int CRC; public BTS_ChargeState clone() { BTS_ChargeState obj = null; try { obj = (BTS_ChargeState)super.clone(); } catch(CloneNotSupportedException e) { e.printStackTrace(); } return obj; } public boolean putByteBuffer(final ByteBuffer bf) { if(bf.limit() < BYTE_LEN) { return false; } System.err.println(ComFn.bytesToHexString(bf.array(), bf.array().length)); ByteBuffer tmpbuf = bf; int crc0 = tmpbuf.getShort(BYTE_LEN-2) & 0xFFFF; int crc1 = BTS_Crc16.CalCRC16(tmpbuf, BYTE_LEN-2); // if(crc0 != crc1) { // System.err.println("crc0:" + crc0 + "===crc1:" +crc1); // return false; // } tmpbuf.position(0); StartDT.year = BTS_ComBase.changeByteToInt(tmpbuf.get()); StartDT.month = BTS_ComBase.changeByteToInt(tmpbuf.get()); StartDT.day = BTS_ComBase.changeByteToInt(tmpbuf.get()); StartDT.hour = BTS_ComBase.changeByteToInt(tmpbuf.get()); StartDT.minute = BTS_ComBase.changeByteToInt(tmpbuf.get()); StartDT.second = BTS_ComBase.changeByteToInt(tmpbuf.get()); StopDT.year = BTS_ComBase.changeByteToInt(tmpbuf.get()); StopDT.month = BTS_ComBase.changeByteToInt(tmpbuf.get()); StopDT.day = BTS_ComBase.changeByteToInt(tmpbuf.get()); StopDT.hour = BTS_ComBase.changeByteToInt(tmpbuf.get()); StopDT.minute = BTS_ComBase.changeByteToInt(tmpbuf.get()); StopDT.second = BTS_ComBase.changeByteToInt(tmpbuf.get()); Test_Time.hour = BTS_ComBase.changeByteToInt(tmpbuf.get()); Test_Time.minute = BTS_ComBase.changeByteToInt(tmpbuf.get()); Test_Time.second = BTS_ComBase.changeByteToInt(tmpbuf.get()); TestState = BTS_ComBase.changeByteToInt(tmpbuf.get()); TestType = BTS_ComBase.changeByteToInt(tmpbuf.get()); TestGroupNum = BTS_ComBase.changeByteToInt(tmpbuf.get()); SaveDataEN = BTS_ComBase.changeByteToInt(tmpbuf.get()); ChargeEN = BTS_ComBase.changeByteToInt(tmpbuf.get()); ChargeOverTime = BTS_ComBase.changeByteToInt(tmpbuf.get()); LastCapTestAlarmRes = BTS_ComBase.changeByteToInt(tmpbuf.get()); for(int n=0; n