充放电一体机FGCD通信程序【二期初版】
BattMonitor_FGCD-A059NT/src/com/dev/fgcd/comm/FGCD_SocketClient_Thread.java
@@ -49,6 +49,7 @@
    private FGCD_SysState sysState;                //ϵͳ״̬
    private FGCD_Cmd m_FBS_Cmd = new FGCD_Cmd();
    public FGCD_TestFBOFile fboFile;            //历史数据文件
    
    private ByteBuffer bytebuffer_for_socket_RX = ByteBuffer.allocate(1500);
@@ -64,6 +65,10 @@
    private int errcount = 0;
    private int DevReadCount = 0;
    private int m_BattMonCount;
    private boolean readMonData = false;      //是否立即读取单体数据  记录历史数据时立即读取单体数据
    private boolean readCharData = false;      //是否立即读取放电数据  记录历史数据时立即读取放电数据
    
    
    public FGCD_SocketClient_Thread(MysqlConnPool m_ConnPool,BattData_RT_Array m_Data,Socket socket){
@@ -113,15 +118,15 @@
               }*/
               
               if(true == reg_in_st) {
                  logger.trace("devid:" + m_StatAndParam.check_dev_id
                  logger.info("devid:" + m_StatAndParam.check_dev_id
                        + ", 数据库中匹配devid成功!!!!!, IP:" + socket.getInetAddress().getHostAddress());
               } else {
                  logger.trace("devid:" + m_StatAndParam.check_dev_id
                  logger.info("devid:" + m_StatAndParam.check_dev_id
                        + ", 数据库中未找到匹配的devid, IP:" + socket.getInetAddress().getHostAddress());
                  break;
               }
            } else {
               logger.trace(this.getName() + " initFGCD_A059Comm() devid:" + m_StatAndParam.check_dev_id
               logger.info(this.getName() + " initFGCD_A059Comm() devid:" + m_StatAndParam.check_dev_id
                        + ", 识别FGCD_A059设备失败 ");
               reg_in_st = false;
            }
@@ -199,16 +204,20 @@
               if(FGCD_ComBase.CMD_GetDischargeParm == m_StatAndParam.op_cmd) {
                  //读取放电参数
                  SocketComm(FGCD_ComBase.CMD_GETDISCHARGEPARAM, ByteBuffer.allocate(0));
                  logger.warn("DevId:" + m_StatAndParam.dev_id + " 读取放电参数");
                  //logger.info("DevId:" + m_StatAndParam.dev_id + " 读取放电参数");
               }     
               
               if(FGCD_ComBase.CMD_SetDischargeParm == m_StatAndParam.op_cmd) {
                  //设置放电参数
                  FGCD_BattTestParam tmp_set_pm = testParam.clone();
                  FGCD_SocketClient_Thread_SQL.queryFbs9100SetParamBydev_id(m_ConnPool, m_StatAndParam, tmp_set_pm);
                  System.out.println(tmp_set_pm);
                  //System.out.println(tmp_set_pm);
                  logger.warn("DevId:" + m_StatAndParam.dev_id + " 设置放电参数"+tmp_set_pm);
                  SocketComm(FGCD_ComBase.CMD_SETDISCHARGEPARAM, tmp_set_pm.getByteBuffer());
                  if(SocketComm(FGCD_ComBase.CMD_SETDISCHARGEPARAM, tmp_set_pm.getByteBuffer())) {
                     //更新当前活化次数
                     sysState.hhCount = tmp_set_pm.cycleTimes;
                     testParam = tmp_set_pm.clone();
                  }
                  //tmp_set_pm = null;
               }
               
@@ -270,15 +279,17 @@
                  SocketComm(fboFile.createCmd(FGCD_ComBase.CMD_GETFILELIST), ByteBuffer.allocate(0));                  
               }else if(FGCD_ComBase.CMD_DownLoadFBDFile == fboFile.op_cmd) {
                  //开始下载文件
               }
                  FGCD_TestDataDownLoad download = new FGCD_TestDataDownLoad(fboFile, socket,m_ConnPool);
                  fboFile.initDownLoadState();
                  FGCD_SocketClient_Thread_SQL.updateFgcd_Filedownload_TableCmdByDevId(m_ConnPool, fboFile);
                  download.downLoadTestData();
               }
            }
            if(DevReadCount %10 == 0) {
               //logger.info("获取单体数据");
               SocketComm(FGCD_ComBase.CMD_GETBATTDATA, ByteBuffer.allocate(0));
               FGCD_Cmd tmp_cmd = new FGCD_Cmd(FGCD_ComBase.CMD_GETBATTDATA);
               SocketComm(tmp_cmd, ByteBuffer.allocate(0));
               tmp_cmd = null;
            }
            
            if(DevReadCount %12 == 0) {
@@ -300,7 +311,6 @@
     *    向指定的socket通道发送数据,以及接收数据
     * @return
     */
    public boolean SocketComm(int cmd,ByteBuffer byteBuffer)
    {
        boolean res_t = false;
@@ -651,7 +661,6 @@
        return byte_rest;
    }
    /*********************************************************************************************/
   
    /*********************************************************************************************/
    public Boolean getDataFromCommBuf(final byte[] bytes)
@@ -668,8 +677,6 @@
            if(errcode > 0) {
               logger.error(this.getName(), "FGCD_Cmd.CMD:"+m_FBS_Cmd.CMD+"\t RTN:"+errcode);
            }
            sysState.dev_captest_stop_type = m_FBS_Cmd.Alarm;
            sysState.dev_workstate = m_FBS_Cmd.WorkState;
            //sysState.dev_workstate = 2;
            //---------------------  心跳包测试    ----------------------------------
            if(FGCD_ComBase.CMD_HEARTBEAT == m_FBS_Cmd.CMD) {
@@ -722,12 +729,13 @@
            }
            //---------------------  获取放电参数    ----------------------------------------------
            else if(FGCD_ComBase.CMD_GETDISCHARGEPARAM == m_FBS_Cmd.CMD) {
                //logger.info(TAG, "getDataFromCommBuf: 获取放电参数成功" );
                if(testParam.putByteBuffer(bf)) {
                   m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_GetDischargeParmAck;
                   FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamBydev_id(m_ConnPool, m_StatAndParam, testParam);
                    isSuccess = true;
                    sysState.hhCount = testParam.cycleTimes;         //更新当前活化总次数
                    //System.out.println(testParam);
                    logger.trace("getDataFromCommBuf: 获取放电参数成功" + testParam );
                }
            }
            //---------------------- 设置放电参数 --------------------------------------------------
@@ -737,7 +745,7 @@
                   m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_SetDischargeParmAck;
                   FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                    isSuccess = true;
                    //System.out.println("设置参数成功");
                    logger.warn("getDataFromCommBuf: 设置放电参数成功" + testParam );
                }
            }
            //---------------------  启动放电    ----------------------------------
@@ -748,7 +756,7 @@
                   FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                   
                    isSuccess = true;
                    System.err.println("启动放电成功");
                    logger.warn("getDataFromCommBuf: 启动放电成功");
                }
            }
            //---------------------  放电暂停    ----------------------------------
@@ -758,7 +766,7 @@
                   FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                   
                    isSuccess = true;
                    //System.out.println("暂停放电成功");
                    logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t getDataFromCommBuf: 暂停放电成功");
                }
            }
            //---------------------  停止放电    ----------------------------------
@@ -767,16 +775,19 @@
                   m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StopDischargeAck;
                   FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                    isSuccess = true;
                    //System.out.println("停止放电成功");
                    logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t getDataFromCommBuf: 停止放电成功");
                }
            }
            //---------------------  获取放电数据    ----------------------------------
            else if(FGCD_ComBase.CMD_GETDISCHARGEDATA == m_FBS_Cmd.CMD) {
                if(sysState.putByteBuffer(bf)) {
                   //读取当前设备的停止原因和当前工作状态
                    sysState.dev_captest_stop_type = m_FBS_Cmd.Alarm;
                    sysState.dev_workstate = m_FBS_Cmd.WorkState;
                   sysState.hhstate = m_FBS_Cmd.Db2;      //活化状态
                   for(int i=0;i<sysState.montmps.length;i++) {
                      vc_data.tmp[i] = sysState.montmps[i];
                   }
                   }
                   FGCD_SocketClient_Thread_SQL.updateFbs9100StateOnlyByDev_Id(m_ConnPool, m_StatAndParam);;
                    isSuccess = true;
                }
@@ -789,7 +800,7 @@
                   m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StartCharTestAck;
                   FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                    isSuccess = true;
                    //System.out.println("启动充电成功");
                    logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t getDataFromCommBuf: 启动充电成功");
                }
            }
            //---------------------  暂停充电    ----------------------------------
@@ -798,7 +809,7 @@
                   m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_PauseCharTestAck;
                   FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                    isSuccess = true;
                    //System.out.println("暂停充电成功");
                    logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t getDataFromCommBuf: 暂停充电成功");
                }
            }
            //---------------------  停止充电    ----------------------------------
@@ -807,7 +818,7 @@
                   m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StopCharTestAck;
                   FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                    isSuccess = true;
                    //System.out.println("停止充电成功");
                    logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t getDataFromCommBuf: 停止充电成功");
                }
            }
@@ -826,7 +837,7 @@
                   //FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                   FGCD_SocketClient_Thread_SQL.updateClearAlarmState(m_ConnPool, m_StatAndParam, FGCD_ComBase.CMD_ClearSysAlarm_ACK);
                   isSuccess = true;
                    System.out.println("清除告警成功");
                   logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t 清除告警成功");
                }
            }
            //---------------------  进入 Android控制   ----------------------------------
@@ -863,7 +874,7 @@
                   m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StartHUOHUATestACK;
                   FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                    isSuccess = true;
                    //System.out.println("启动活化测试成功");
                    logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t 启动活化测试成功");
                }
            }else if(FGCD_ComBase.CMD_PAUSEHHTEST == m_FBS_Cmd.CMD) {
               //暂停活化测试
@@ -871,7 +882,7 @@
                  m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_PauseHUOHUATestACK;
                   FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                    isSuccess = true;
                    //System.out.println("暂停活化测试成功");
                    logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t 暂停活化测试成功");
                }               
            }else if(FGCD_ComBase.CMD_STOPHHTEST == m_FBS_Cmd.CMD) {
               //停止活化测试
@@ -879,7 +890,7 @@
                  m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StopHUOHUATestACK;
                   FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                    isSuccess = true;
                    //System.out.println("停止活化测试成功");
                    logger.warn("dev_id:"+m_StatAndParam.dev_id+"\t 停止活化测试成功");
                }
            }else if(FGCD_ComBase.CMD_GETFILELIST == m_FBS_Cmd.CMD) {
               //获取文件列表
@@ -918,7 +929,13 @@
                logger.error(e.toString(), e);
             }
             int now_test_type = FGCD_ComBase.TestType_NULL;
             m_RTData[n].mTestData.test_stoptype = sys_state.dev_captest_stop_type;      //更新当前的停止原因
             //记录停止原因时数据处理
             if(sys_state.dev_captest_stop_type > 0x80) {
                m_RTData[n].mTestData.test_stoptype = sys_state.dev_captest_stop_type - 0x80;      //更新当前的停止原因
             }else {
                m_RTData[n].mTestData.test_stoptype = sys_state.dev_captest_stop_type;
             }
             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]);
@@ -930,6 +947,12 @@
                //System.out.println("vc_data.battcurr[n]:"+vc_data.battcurr[n]);
                now_test_type = FGCD_ComBase.TestType_Charge;
             }
             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)) {
@@ -939,7 +962,7 @@
                 //--------------------------------------------------------------------------//
                m_RTData[n].mTestData.setDevFBS9100S_WorkState(sys_state.dev_captest_stop_type, 
                                                    now_test_type,
                                                    sys_state.dev_workstate);
                                                    now_dev_workstate);
//             }
             
             //--------------------- 再读取端电压 -----------------------------------------//