充放电一体机FGCD通信程序【二期初版】
Administrator
2022-01-23 843deadf204a3b0636b5188d0dedd77a0e9139f8
一体机历史充放电数据记录新增组1组2逻辑
4个文件已修改
132 ■■■■■ 已修改文件
BattMonitor_FGCD-A059NT/src/com/battmonitor/data/BattStatData.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FGCD-A059NT/src/com/battmonitor/data_store/InsertDataToMysql_Task_SQL.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FGCD-A059NT/src/com/dev/fgcd/comm/FGCD_SocketClient_Thread.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FGCD-A059NT/src/com/dev/fgcd/data/FGCD_SysState.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FGCD-A059NT/src/com/battmonitor/data/BattStatData.java
@@ -78,6 +78,8 @@
    public float battRestCap;
    public int battRestTime;
    
    public int upload_client_type;                //充放电一体机用于判断当前放电的是电池组1还是电池组2
    public BattStatData()
    {
        init((byte) BATTSTATE_FLOAT, 0);
@@ -142,7 +144,7 @@
        bdata.battRealCap = battRealCap;
        bdata.battRestCap = battRestCap;
        bdata.battRestTime = battRestTime;
        bdata.upload_client_type = upload_client_type;
        return bdata;
    }
    
@@ -317,6 +319,15 @@
        groupVol = vol;
    }
    
    /**
     * 从FGCD设备更新当前组号
     * @param vol
     */
    public void updateGroupNumFrom_FBSDev(int client_type)
    {
        upload_client_type = client_type;
    }
    /*************************************************************************/
    
    /**
BattMonitor_FGCD-A059NT/src/com/battmonitor/data_store/InsertDataToMysql_Task_SQL.java
@@ -438,7 +438,8 @@
                    + "max_monnum, "
                    + "max_monvol, "
                    + "min_monnum, "
                    + "min_monvol) "
                    + "min_monvol,"
                    + "upload_client_type) "
                    + " VALUES "
                    + "("+ rt_data.BattGroupId + ", "
                    + tmp_test_data.testRecordCount + ", "
@@ -458,7 +459,8 @@
                    + rt_data.mMaxMonNum + ", "
                    + rt_data.mMaxMonVol + ", "
                    + rt_data.mMinMonNum + ", "
                    + rt_data.mMinMonVol + ") ";
                    + rt_data.mMinMonVol + ","
                    + tmp_test_data.upload_client_type+") ";
            /**
             * 2021-08-16 @lijun    向插入batttestdata_inf表中插入历史数据时记录当前电池组的内阻数据
             * 
BattMonitor_FGCD-A059NT/src/com/dev/fgcd/comm/FGCD_SocketClient_Thread.java
@@ -69,6 +69,7 @@
    private int sendlock_state_mon     = 1;                //单体发送数据
    private int sendlock_state_char = 1;                //充放电发送数据
    
    public FGCD_SocketClient_Thread(MysqlConnPool m_ConnPool,BattData_RT_Array m_Data,Socket socket){
        this.socket = socket;
        this.m_ConnPool = m_ConnPool;
@@ -265,11 +266,17 @@
                        FGCD_SocketClient_Thread_SQL.queryFbs9100SetParamBydev_id(m_ConnPool, m_StatAndParam, tmp_set_pm);
                        if(FGCD_ComBase.WORK_STATE_STOPPED == sysState.dev_workstate) {
                            SocketComm(FGCD_ComBase.CMD_SETNOWWORKBATT, tmp_set_pm.groupCount);
                            //切换电池组后,立即读取一次组端和单体数据
                            isOnlineMode = true;
                            readMonData = true;
                            readCharData = true;
                            logger.debug("dev_id:"+m_StatAndParam.dev_id+"\t切换电池组号:" + tmp_set_pm.groupCount);
                        }else {
                            logger.debug("dev_id:"+m_StatAndParam.dev_id+"\t 设备正在工作无法,切换电池组号:" + tmp_set_pm.groupCount);                        
                        }
                        //设置电池组号
                        tmp_set_pm = null;
                    }else if(FGCD_ComBase.CMD_StartShowPic == m_StatAndParam.op_cmd) {
@@ -283,7 +290,7 @@
                
                if(DevReadCount % 13 == 0 || isOnlineMode) {
                    //
                    logger.info("获取在线模块状态");
                    //logger.info("获取在线模块状态");
                    FGCD_Cmd tmp_cmd = new FGCD_Cmd(FGCD_ComBase.CMD_READONLINEMODEINFO);
                    SocketComm(tmp_cmd, ByteBuffer.allocate(0));
                    tmp_cmd = null;
@@ -1017,6 +1024,98 @@
    
    
    /*********************************************************************************************/
    /*private void getFBS9100MonVolData(FGCD_VCData vc_data, FGCD_SysState sys_state)
    {
        boolean fbsdev_statchange_record_tag = false;
        int mon_index = 0;
        int batt_index_now = onlineInfo.currBattNum-1;        //当前电池组号 0->电池组1  1->电池组2
        for(int n=0; n<FBS9100_ComBase.BattGroupCountMax; n++) {
            if(null != m_RTData[n]) {
                if(batt_index_now == n) {
                    //--------------------- 先读取单体电压 ---------------------------------------//
                    try {
                        for(int index=0; index<m_RTData[n].al_MonVol.size(); index++) {
                            if(mon_index >= FBS9100_ComBase.MonomerCountMax) {
                                break;
                            }
                            m_RTData[n].al_MonVol.get(index).monVol = (float) vc_data.vol[mon_index];
                            m_RTData[n].al_MonVol.get(index).monTmp = (float) vc_data.tmp[mon_index];
                            mon_index++;
                        }
                    } catch (Exception e) {
                        logger.error(e.toString(), e);
                    }
                }
                int now_test_type = FGCD_ComBase.TestType_NULL;
                int test_stoptype = -1;
                //记录停止原因时数据处理
                if(sys_state.dev_captest_stop_type >= 0x80) {
                    test_stoptype = sys_state.dev_captest_stop_type - 0x80;        //更新当前的停止原因
                }else {
                    test_stoptype = sys_state.dev_captest_stop_type;
                }
                //System.out.println("停止原因:"+m_RTData[n].mTestData.test_stoptype);
                double test_curr = sys_state.chargeCurr;
                int now_dev_workstate = 0;
                if(FGCD_ComBase.WORK_STATE_DISTEST == sys_state.dev_workstate ||
                    (FGCD_ComBase.WORK_STATE_STOPDIS == sys_state.dev_workstate)){
                    //vc_data.battcurr[n] = (-1)*Math.abs(vc_data.battcurr[n]);
                    //System.out.println("vc_data.battcurr[n]:"+vc_data.battcurr[n]);
                    test_curr = (-1)*Math.abs(test_curr);
                    now_test_type = FGCD_ComBase.TestType_CAP;
                }else if(FGCD_ComBase.WORK_STATE_CHARTEST == sys_state.dev_workstate ||
                        FGCD_ComBase.WORK_STATE_STOPCHAR == sys_state.dev_workstate    ){
                    //vc_data.battcurr[n] = Math.abs(vc_data.battcurr[n]);
                    //System.out.println("vc_data.battcurr[n]:"+vc_data.battcurr[n]);
                    now_test_type = FGCD_ComBase.TestType_Charge;
                    test_curr = Math.abs(test_curr);
                }
                now_dev_workstate = sys_state.dev_workstate;
                if(sys_state.hhstate > 0) {
                    //设备当前状态为活化状态
                    now_dev_workstate = FGCD_ComBase.WORK_STATE_HUOHUA;
                    now_test_type = FGCD_ComBase.TestType_HuoHua;
                }
                //--------------------- 再读取系统状态 ---------------------------------------//
//                if(((FBS9100_ComBase.SYS_STATE_STOPPED!=sys_state.dev_workstate) && ((n+1)==sys_state.TestGroupNum))
//                    || (FGCD_ComBase.WORK_STATE_STOPPED == sys_state.dev_workstate)) {
                    //----------------------- 顺序不能颠倒 -----------------------------------//
                    int work_stat = m_RTData[n].mTestData.dev_FBS9100S_WorkState;
                    int test_type = m_RTData[n].mTestData.dev_FBS9100S_TestType;
                    //--------------------------------------------------------------------------//
                    m_RTData[n].mTestData.setDevFBS9100S_WorkState(test_stoptype,
                                                                    now_test_type,
                                                                    now_dev_workstate);
//                }
                //--------------------- 再读取端电压 -----------------------------------------//
                //--------------------- 如果软件版本大于35,在线电压和组端电压保留2位小数-------//
                //m_RTData[n].mTestData.updateGroupTempFrom_FBSDev((float)(vc_data.batttemp[n]));
                m_RTData[n].mTestData.updateOnlineVolFrom_FBSDev((float)(sysState.on_online_vol));
                if(batt_index_now == n) {
                    m_RTData[n].mTestData.updateGroupVolFrom_FBSDev((float)(sysState.tatalVol));
                }else {
                    m_RTData[n].mTestData.updateGroupVolFrom_FBSDev((float)(vc_data.groupvol[n]));
                }
                //---------------------------------------------------------------------------//
                //--------------------- 接着读取电流 -----------------------------------------//
                if(batt_index_now == n) {
                    //当前电池组
                    m_RTData[n].mTestData.updateCurrFrom_FBSDev((float)test_curr);
                }
                m_RTData[n].mTestData.updateNewDataRCTime(new Date());
                //---------------------------------------------------------------------------//
                //---------------------------------------------------------------------------//
                //--------------------- 先更新单体数据,再更新电池状态数据 ----------------------//
                m_RTData[n].updata_BattRtData_To_RamDb();
                m_RTData[n].updata_BattRtSate_To_RamDb();
                //---------------------------------------------------------------------------//
            }
        }
    }*/
    private void getFBS9100MonVolData(FGCD_VCData vc_data, FGCD_SysState sys_state)
    {
        boolean fbsdev_statchange_record_tag = false;
@@ -1084,8 +1183,16 @@
                m_RTData[n].mTestData.updateGroupVolFrom_FBSDev((float)(sysState.tatalVol));
                //---------------------------------------------------------------------------//
                //--------------------- 接着读取电流 -----------------------------------------//
                m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) vc_data.battcurr[n]);
                double test_curr = Math.abs(sysState.chargeCurr);
                if(vc_data.battstate[n] == FGCD_ComBase.BattState_Discharge ||
                        vc_data.battstate[n] == FGCD_ComBase.BattState_PauseDischarge) {
                    //放电或者暂停放电时
                    test_curr = test_curr * (-1);
                }
                m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) test_curr);
                //m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) vc_data.battcurr[n]);
                m_RTData[n].mTestData.updateNewDataRCTime(new Date());
                m_RTData[n].mTestData.updateGroupNumFrom_FBSDev(onlineInfo.currBattNum);
                //---------------------------------------------------------------------------//
                //---------------------------------------------------------------------------//
                //--------------------- 先更新单体数据,再更新电池状态数据 ----------------------//
@@ -1095,6 +1202,7 @@
            }
        }
    }
    public static void main(String[] args) {
        byte[] b = new byte[]{0x46 ,0x47, 0x43 ,0x44,0x2D ,0x41 ,0x30 ,0x35 ,0x39 ,0x58 ,0x54 ,0x20 ,0x50 ,0x72 ,0x6F ,0x2C ,0x56 ,0x31 ,0x2E ,0x38 ,0x2E ,0x30 ,0x2E ,0x38 ,0x2C ,0x31 ,0x3A ,0x49 ,0x44 ,0x43 ,0x45 ,0x2D ,0x50 ,0x72 ,0x6F ,0x2D ,0x38 ,0x4B ,0x57 ,0x2D ,0x56 ,0x33 ,0x2E ,0x30 ,0x31 ,0x2E ,0x31 ,0x39 ,0x20 };
        try {
BattMonitor_FGCD-A059NT/src/com/dev/fgcd/data/FGCD_SysState.java
@@ -128,6 +128,7 @@
        btnState = FGCD_ComBase.changeByteToInt(bf.get());                            //按键状态(0:停止  1:暂停放电  2:放电   3:暂停充电   4:充电  5:等待充电   6:等待放电)
        lowerCount = FGCD_ComBase.changeShortToInt(bf.getShort());                    //已到下限单体数量
        chargeCurr = FGCD_ComBase.changeShortToDouble(bf.getShort())/10;            //充电电流(0.1A)
        testCap = FGCD_ComBase.changeShortToInt(bf.getShort());                        //已放容量(1AH)
        maxVolNum = FGCD_ComBase.changeShortToInt(bf.getShort());                    //最高单体号
        maxVol = FGCD_ComBase.changeShortToDouble(bf.getShort())/1000;                //最高单体电压(0.001V)