package com.dev.bts.data; import java.util.ArrayList; public class BattData_RT { public static final int DEF_CommTimeOutMax = 7200; private boolean MonDataFromCInterfaceOk = false; private boolean MonDataIsUseForIdce8200 = false; private boolean mIDCE8200_ConState = false; private int mIDCE8200CommTimeout = 0; private boolean Lock_Data_Stat = false; public int StationId; public boolean Station_Event_poff = false; public boolean Station_Event_xuhang = false; public boolean Station_Event_diaozhan = false; //public String StationName; //public byte[] StationIp = new byte[4]; public int BattGroupId = 0; public int BattCurrDeviceId = 0; public int[] BattCurrValueId = new int[16]; public int FBSDeviceId = 0; public String FBSDeviceIp = " "; private String FBSRegCode = " "; public int GroupIndexInFBSDevice = 1; public int BattGroupNum; public int BattState; public int MonCount = 1; public float MonStdVol; public float MonStdCap; private boolean StoreBattRes_DataEn = false; private boolean StoreDataBusy = false; public boolean MysqlDataTable_Exist = false; public boolean MysqlDataResInfTable_Exist = false; public boolean MysqlRecordInf_Exist = false; public FBS9100S_NT_DCDC_Data m_DCDC_Data = new FBS9100S_NT_DCDC_Data(); public ArrayList al_MonVol = new ArrayList(); public ArrayList al_MonVol_RtOld = new ArrayList(); public ArrayList al_MonVol_History = new ArrayList(); public ArrayList> al_MonVol_C_Id = new ArrayList>(); public BattStatData mTestData; private int mCommTimeCoutCount = 0; public int mMaxMonNum = 0; public float mMaxMonVol = 0; public int mMinMonNum = 0; public float mMinMonVol = 0; private float mBattFloatCurrLevel = (float) 15.0; private float mBattFloatVolLevel = (float) (MonStdVol*MonCount*1.125); public int mTestTimeLongMin = 30*60; public int mSaveDataTimeInterval = 10; private float mDataHistoryNewLevel = (float) 0.01; private int mTestDataRecordCountMax = 10000; /*********************************************************************************/ /*********************************************************************************/ public BattData_RT() { mTestData = new BattStatData(); initTestDataSaveRunable(); } /*********************************************************************************/ public void initTestDataSaveRunable() { } /*********************************************************************************/ /*********************************************************************************/ /** * ÉèÖà tmp_al_id Êý×éÖÐcInterfaceIdµÄÖµ */ public void make_al_MonVol_C_Id() { try { al_MonVol_C_Id.clear(); ArrayList tmp_al_id = null; int start_index = 0; for(int m=0; m 24) || ((tmp_id-2) > tmp_al_id.get(start_index - 1)) || ((tmp_id+2) < tmp_al_id.get(start_index - 1))) { start_index = 0; tmp_al_id = new ArrayList(); al_MonVol_C_Id.add(tmp_al_id); } tmp_al_id.add(tmp_id); start_index++; } } catch (Exception e) { System.err.println("BattData_RT.make_al_MonVol_C_Id():" + e.getMessage()); } } /** * ÉèÖÃal_MonVol_C_IdÖеÄcInterfaceId */ public void make_al_MonVol_Auto_C_Id() { try { al_MonVol_C_Id.clear(); ArrayList tmp_al_id = null; tmp_al_id = new ArrayList(); for(int m=0; m0) && (new_mon_cnt mon_cnt) { while(new_mon_cnt > this.al_MonVol.size()) { MonVolData data = new MonVolData(0, 0, this.BattGroupId*1000 + this.al_MonVol.size()+1); this.al_MonVol.add(data); this.al_MonVol_RtOld.add(data.clone()); this.al_MonVol_History.add(data.clone()); } //----------- Ôö¼ÓµÄʱºò×îºóÉèÖõ¥ÌåÊýÁ¿ ---------------- this.MonCount = new_mon_cnt; } else if(new_mon_cnt < mon_cnt) { //----------- ¼õÉÙµÄʱºò×îÏÈÉèÖõ¥ÌåÊýÁ¿ ---------------- this.MonCount = new_mon_cnt; while(new_mon_cnt < this.al_MonVol.size()) { this.al_MonVol.remove(this.al_MonVol.size()-1); this.al_MonVol_RtOld.remove(this.al_MonVol_RtOld.size()-1); this.al_MonVol_History.remove(this.al_MonVol_History.size()-1); } } } } public void setBattFloatVolCurrLevel(float vol_lev, float curr_level) { mBattFloatVolLevel = vol_lev; mBattFloatCurrLevel = curr_level; mTestData.setBattFloatCurrLevel(mBattFloatCurrLevel); } public float getBattFloatVolLev() { return mBattFloatVolLevel; } public float getBattFloatCurrLev() { return mBattFloatCurrLevel; } public String getDevRegCode() { return FBSRegCode; } public void setDevRegCode(String reg_code) { FBSRegCode = reg_code; } public boolean isMonDataFromCInterfaceOk() { return MonDataFromCInterfaceOk; } public void setMonDataFromCInterfaceOk(boolean stat) { MonDataFromCInterfaceOk = stat; } public boolean isMonDataUseForIdce8200() { return MonDataIsUseForIdce8200; } public void setMonDataUseForIdce8200(boolean stat) { MonDataIsUseForIdce8200 = stat; } /********************************************************************************/ public boolean checkIfIdce8200ComMTimeout() { boolean time_ount = false; if(mIDCE8200CommTimeout >= 60) { time_ount = true; mIDCE8200_ConState = false; setMonDataUseForIdce8200(false); } if(mIDCE8200CommTimeout < 1000) mIDCE8200CommTimeout++; return time_ount; } public boolean getIdce8200ComState() { return mIDCE8200_ConState; } public void updateMonVolFromIDCE8200(int mon_index, float vol) { try { mIDCE8200_ConState = true; mIDCE8200CommTimeout = 0; setMonDataUseForIdce8200(true); al_MonVol.get(mon_index).monVol = vol; } catch (Exception e) { System.err.println("BattData_RT.updateMonVolFrom_C_Interface():" + e.getMessage()); } } public void updateMonVolFromSQL_SERVER() { if(true == isMonDataFromCInterfaceOk()) { return; } try { float sumvol = 0; for(int bt_index=0; bt_index 0.1) && (false == isMonDataFromCInterfaceOk())) { setMonDataFromCInterfaceOk(true); } } sumvol += al_MonVol.get(var).monVol; } mTestData.groupVol = sumvol; } catch (Exception e) { System.err.println("BattData_RT.updateMonVolFrom_C_Interface():" + e.getMessage()); } } /********************************************************************************/ public int getBattCount() { return MonCount; } public byte getBattState() { return mTestData.battState; } public byte getBattTestType() { return mTestData.battTestState; } public float getOnlineVol() { return mTestData.onlineVol; } public float getGroupVol() { return mTestData.groupVol; } public float getGroupTmp() { return mTestData.groupTmp; } public float getTestCurr() { return mTestData.testCurr; } public float getTestCap() { return mTestData.testCap; } public long getTestStartTime() { return mTestData.startTestTime.getTime(); } public long getTestRecordTime() { return mTestData.recordTime.getTime(); } public int getTestTimeLong() { return mTestData.testTimeLong; } public float getBattRealCap() { return mTestData.battRealCap; } public float getBattRestCap() { return mTestData.battRestCap; } public int getBattRestTime() { return mTestData.battRestTime; } /** * ÉèÖÃµç³Ø×éµ¥ÌåµÄ×î´óµ¥ÌåµçѹºÍ×îСµ¥Ìåµçѹ£¬ÒÔ¼°¶ÔÓ¦µÄµ¥Ìå±àºÅ * @param al_vol */ public void makeMaxMinMonVol(ArrayList al_vol) { try { if(null != al_vol) { float maxvol = -80000; float minvol = 80000; for(int n=0; n al_vol.get(n).monVol) { minvol = al_vol.get(n).monVol; mMinMonNum = n+1; } } mMaxMonVol = maxvol; mMinMonVol = minvol; } } catch (Exception e) { System.err.println("BattData_RT.makeMaxMinMonVol():" + e.getMessage()); } } public float getMaxMonVol() { float maxvol = -80000; try { for(int n=0; n al_MonVol.get(n).monVol) { minvol = al_MonVol.get(n).monVol; mMinMonNum = n+1; } } } catch (Exception e) { System.err.println("BattData_RT.getMinMonVol():" + e.getMessage()); } return minvol; } public float getGroupVolFromMonVol() { float gvol = 0; try { for(int n=0; n= DEF_CommTimeOutMax) { mTestData.TestCurr_RT = 0; mTestData.testCurr = 0; } } public void makeDataResetByCommTimeOut() { this.mCommTimeCoutCount = 0; } //------------------------------------------------------------------------------------// private boolean make_al_MonVol_History() { boolean data_new = false; try { for(int n=0; n mDataHistoryNewLevel) { al_MonVol_History.get(n).data_new = true; al_MonVol_History.get(n).monVol = tmp_dt; data_new = true; } } } catch (Exception e) { System.err.println("BattData_RT.make_al_MonVol_History():" + e.getMessage()); } return data_new; } public float get_al_MonVol_History(int index) { float vol = 0; try{ if((index>=0) && (index=0) && (index= 10000) break; if(al_MonVol.get(n).monVol <= 0.001) { have_zero_vol = true; break; } } } catch (Exception e) { System.err.println("BattData_RT.checkIfHaveZeroMonVol():" + e.getMessage()); } return have_zero_vol; } private void initTestData(byte test_type) { int count = 1; if(BattStatData.BATTSTATE_FLOAT != test_type) { } if(count <= 0) { return; } setMonitorParam(test_type); mTestData.init(test_type, count); int fbsdev_testtype = mTestData.getDevFBS9100S_TestType(); if((FBS9100_ComBase.SYS_STATE_STOPPED != mTestData.getDevFBS9100S_WorkState()) && ((FBS9100_ComBase.TestType_CAP==fbsdev_testtype) || (FBS9100_ComBase.TestType_Charge==fbsdev_testtype))) { mTestData.setLoaderType(BattStatData.TEST_LOADER_FBS9100S); } else { if(true == mTestData.isCurrDataUseForIdceFbi()) { if(false == mTestData.isCurrDataUseForIdceFbi_LaZha()) { mTestData.setLoaderType(BattStatData.TEST_LOADER_FBI_IDCE); } } } MysqlDataTable_Exist = false; MysqlDataResInfTable_Exist = false; MysqlRecordInf_Exist = false; } public void printBattRtDataDebugInf_FBS9100S(int pos) { /* if(BattStatData.TEST_LOADER_FBS9100S == mTestData.getLoaderType()) { System.out.println(String.format("batt_stat_change at pos " + pos + ", " + " bg_id: %d," + " battTestState: %d," + " batt_stat: %d," + " batt_curr: %1.1fA," + " dcdc_Vout: %1.2fV," + " dcdc_Iout: %1.2fA," + " dcdc_Ibuck: %1.2fA," + " dcdc_Workstate: %d," + " dcdc_WorkMode: %d," + " dcdc_VoutSet: %1.2fV," + " dcdc_IoutSet: %1.2fA," + " dcdc_IbuckSet: %1.2fA," + " dcdc_alarm: %d," + " dcdc_txcnt: %d," + " dcdc_rxcnt: %d", this.BattGroupId, mTestData.battTestState, mTestData.battState, mTestData.testCurr, m_DCDC_Data.Vout, m_DCDC_Data.Iout, m_DCDC_Data.Ibuck, m_DCDC_Data.RunSetComm, m_DCDC_Data.ModeSetComm, m_DCDC_Data.SetDisVol, m_DCDC_Data.SetDisCurr, m_DCDC_Data.SetBuckI, m_DCDC_Data.SMR_Alarm1, m_DCDC_Data.CommTxCnt, m_DCDC_Data.CommRxCnt) + Com.getNowTimeWithAt()); } */ } public boolean checkIfDataNeedStore() { boolean store_state = false; /***********************************************************************/ if(false == getStoreDataBusyTag()) //ÈÃÊý¾Ý¿âÄÜÈ·±£Íê³ÉÊý¾Ý´æ´¢ { mTestData.testCurr = mTestData.TestCurr_RT; if(Math.abs(mTestData.testCurr) < mBattFloatCurrLevel) { if(BattStatData.BATTDATA_FLOAT != mTestData.battTestState) { if((FBS9100_ComBase.SYS_STATE_DISCHARGING != mTestData.dev_FBS9100S_WorkState) && (FBS9100_ComBase.SYS_STATE_HELUQI_DISCHARGING != mTestData.dev_FBS9100S_WorkState)) { //2018Äê12ÔÂ15ÈÕÌí¼Ó,Ö»ÒªÉ豸´¦ÓÚºËÈݲâÊÔ»òÉýÑ¹Ðøº½×´Ì¬,Êý¾Ý¾Í²»Í£Ö¹¼Ç¼. printBattRtDataDebugInf_FBS9100S(1); mTestData.battTestState = BattStatData.BATTSTATE_FLOAT; mTestData.battState = BattStatData.BATTSTATE_FLOAT; store_state = true; } } /*else if(BattStatData.BATTDATA_CHARGE == mTestData.battTestState) { //if(FBS9100_ComBase.SYS_STATE_CHARGING != mTestData.dev_FBS9100S_WorkState) { //2018Äê12ÔÂ15ÈÕÌí¼Ó,Ö»ÒªÉ豸´¦ÓÚºËÈݲâÊÔ»òÉýÑ¹Ðøº½×´Ì¬,Êý¾Ý¾Í²»Í£Ö¹¼Ç¼. printBattRtDataDebugInf_FBS9100S(1); mTestData.battTestState = BattStatData.BATTSTATE_FLOAT; mTestData.battState = BattStatData.BATTSTATE_FLOAT; store_state = true; //} }*/ } if(false == store_state) { if(mTestData.testCurr >= (mBattFloatCurrLevel+2)) { if(BattStatData.BATTSTATE_DISCHARGE == mTestData.battTestState) { printBattRtDataDebugInf_FBS9100S(2); mTestData.battTestState = BattStatData.BATTSTATE_FLOAT; mTestData.battState = BattStatData.BATTSTATE_FLOAT; store_state = true; } else if(BattStatData.BATTSTATE_FLOAT == mTestData.battTestState) { initTestData(BattStatData.BATTSTATE_CHARGE); printBattRtDataDebugInf_FBS9100S(3); } } else if(mTestData.testCurr <= ((mBattFloatCurrLevel+2)*(-1))) { if(BattStatData.BATTSTATE_CHARGE == mTestData.battTestState) { printBattRtDataDebugInf_FBS9100S(4); mTestData.battTestState = BattStatData.BATTSTATE_FLOAT; mTestData.battState = BattStatData.BATTSTATE_FLOAT; store_state = true; } else if(BattStatData.BATTSTATE_FLOAT == mTestData.battTestState) { initTestData(BattStatData.BATTSTATE_DISCHARGE); printBattRtDataDebugInf_FBS9100S(5); } } else {//edit by mxpopstar @2018.12.18 if(BattStatData.BATTSTATE_FLOAT == mTestData.battTestState) { if((FBS9100_ComBase.SYS_STATE_DISCHARGING == mTestData.dev_FBS9100S_WorkState) ||(FBS9100_ComBase.SYS_STATE_HELUQI_DISCHARGING == mTestData.dev_FBS9100S_WorkState)) { initTestData(BattStatData.BATTSTATE_DISCHARGE); printBattRtDataDebugInf_FBS9100S(6); }/* else if(FBS9100_ComBase.SYS_STATE_CHARGING == mTestData.dev_FBS9100S_WorkState) { initTestData(BattStatData.BATTSTATE_CHARGE); printBattRtDataDebugInf_FBS9100S(7); }*/ } } } } if((BattStatData.BATTSTATE_DISCHARGE == mTestData.battTestState) || (BattStatData.BATTSTATE_CHARGE == mTestData.battTestState)) { mTestData.calTestCap(1); calBattRestCap(mTestData.testCurr, mTestData.testCap); boolean dt_new = make_al_MonVol_History(); if(mTestData.recordNum < mTestDataRecordCountMax) { if((true == dt_new) || ((mTestData.dataCalCount % mSaveDataTimeInterval)==0)) { set_al_MonVol_History_New(); store_state = true; } } } else { if(mTestData.groupVol > mBattFloatVolLevel) { mTestData.battState = BattStatData.BATTSTATE_JUNCHARGE; } else { mTestData.battState = BattStatData.BATTSTATE_FLOAT; } } if(true == getStoreDataBusyTag()) { store_state = false; } else { if(true == store_state) { setStoreDataBusyTag(); } } /***********************************************************************/ return store_state; } public void clearStoreDataBusyTag() { StoreDataBusy = false; } private boolean getStoreDataBusyTag() { return StoreDataBusy; } private void setStoreDataBusyTag() { StoreDataBusy = true; } }