充放电一体机FGCD通信程序【二期初版】
Administrator
2022-02-11 06cc6a688030171d1bff4453c76bc216dbde09e1
BattMonitor_FGCD-A059NT/src/com/dev/fgcd/comm/FGCD_SocketClient_Thread.java
@@ -264,6 +264,8 @@
               if(FGCD_ComBase.CMD_SetNowBatt == m_StatAndParam.op_cmd) {
                  FGCD_BattTestParam tmp_set_pm = testParam.clone();
                  FGCD_SocketClient_Thread_SQL.queryFbs9100SetParamBydev_id(m_ConnPool, m_StatAndParam, tmp_set_pm);
                  logger.debug("dev_id:开始切换电池组"+m_StatAndParam.dev_id+"\t切换电池组号:" + tmp_set_pm.groupCount);
                  if(FGCD_ComBase.WORK_STATE_STOPPED == sysState.dev_workstate) {
                     SocketComm(FGCD_ComBase.CMD_SETNOWWORKBATT, tmp_set_pm.groupCount);
                     
@@ -271,8 +273,8 @@
                     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);                  
                  }
@@ -594,7 +596,7 @@
                Date d1 = new Date();
                int rx_read_time_out = 0;
                //int rx_len = 0;
                //System.out.println("数据长度" + plain_tx_t.length + "\t发送数据:" + ComFn.bytesToHexString(plain_tx_t, plain_tx_t.length));
                System.out.println("数据长度" + plain_tx_t.length + "\t发送数据:" + ComFn.bytesToHexString(plain_tx_t, plain_tx_t.length));
                out.write(plain_tx_t);
                out.flush();
                sysState.makeDevCommDataFlowSum(plain_tx_t.length);
@@ -637,7 +639,7 @@
                
                sysState.makeDevCommDataFlowSum(cipher_buf.length);
                
                //System.err.println("数据长度"+cipher_buf.length+"\t返回数据:"+ ComFn.bytesToHexString(cipher_buf, cipher_buf.length));
                System.err.println("数据长度"+cipher_buf.length+"\t返回数据:"+ ComFn.bytesToHexString(cipher_buf, cipher_buf.length));
                //Log.e(TAG, "SocketComm: "+ComFn.bytesToHexString(plain_buf, plain_buf.length));
                if(true == getDataFromCommBuf(cipher_buf)) {
                   res_t = true; 
@@ -761,7 +763,7 @@
            else if(FGCD_ComBase.CMD_CHANGEBATT == m_FBS_Cmd.CMD) {
                if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
                    isSuccess = true;
                    //logger.info(TAG, "getDataFromCommBuf: 切换电池组成功");
                    logger.info(TAG, "getDataFromCommBuf: 切换电池组成功");
                }
            }
@@ -777,7 +779,8 @@
            //---------------------  获取单体数据    ----------------------------------------------
            else if(FGCD_ComBase.CMD_GETBATTDATA == m_FBS_Cmd.CMD) {
                //System.out.println("获取单体数据");
                if(vc_data.putByteBuffer(bf, m_FBS_Cmd.ByteLen-m_FBS_Cmd.BYTE_LEN)) {
                //if(vc_data.putByteBuffer(bf, m_FBS_Cmd.ByteLen-m_FBS_Cmd.BYTE_LEN)) {
                if(vc_data.putByteBuffer(bf, m_FBS_Cmd.getDb1()*256+m_FBS_Cmd.Db2)) {
                   readMonData_lock = m_FBS_Cmd.Db3;
                   //System.out.println("单体数据返回:"+readMonData_lock);
                   if(m_FBS_Cmd.Db3 == 2) {
@@ -858,6 +861,7 @@
                   //读取当前设备的停止原因和当前工作状态
                    sysState.dev_captest_stop_type = m_FBS_Cmd.Alarm;
                    sysState.dev_workstate = m_FBS_Cmd.WorkState;
                    sysState.checkTestCurr();
                   sysState.hhstate = m_FBS_Cmd.Db2;      //活化状态
                   for(int i=0;i<sysState.montmps.length;i++) {
                      vc_data.tmp[i] = sysState.montmps[i];
@@ -1024,14 +1028,14 @@
    
    
    /*********************************************************************************************/
   /*private void getFBS9100MonVolData(FGCD_VCData vc_data, FGCD_SysState sys_state)
   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) {
             if(onlineInfo.currBattNum > 0) {
                mon_index = batt_index_now * m_RTData[n].MonCount;
                //--------------------- 先读取单体电压 ---------------------------------------//
                try {
                   for(int index=0; index<m_RTData[n].al_MonVol.size(); index++) {
@@ -1040,37 +1044,35 @@
                      }
                      
                      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];
                      m_RTData[n].al_MonVol.get(index).monTmp = (float) vc_data.tmp[index];
                      mon_index++;
                   }
                } catch (Exception e) {
                   logger.error(e.toString(), e);
                }
                m_RTData[n].setA059_num(onlineInfo.currBattNum);
             }
             int now_test_type = FGCD_ComBase.TestType_NULL;
             int test_stoptype = -1;
             //记录停止原因时数据处理
             if(sys_state.dev_captest_stop_type >= 0x80) {
             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) {
@@ -1094,29 +1096,25 @@
             //--------------------- 如果软件版本大于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]));
             }
             //m_RTData[n].mTestData.updateGroupVolFrom_FBSDev((float)(sysState.tatalVol));
             m_RTData[n].mTestData.updateGroupVolFrom_FBSDev((float)(onlineInfo.getGroupVol()));          //更新电池组组端电压
             m_RTData[n].mTestData.updateCurrFrom_FBSDev((float)sys_state.chargeCurr);
             //---------------------------------------------------------------------------//
             //--------------------- 接着读取电流 -----------------------------------------//
            if(batt_index_now == n) {
               //当前电池组
               m_RTData[n].mTestData.updateCurrFrom_FBSDev((float)test_curr);
            }
             //--------------------- 接着更新当前时间 -----------------------------------------//
            m_RTData[n].mTestData.updateNewDataRCTime(new Date());
             //---------------------------------------------------------------------------//
            //---------------------------------------------------------------------------//
            m_RTData[n].mTestData.updateGroupNumFrom_FBSDev(onlineInfo.currBattNum);   //更新当前电池组号
            //--------------------- 先更新单体数据,再更新电池状态数据 ----------------------//
            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)
   /*private void getFBS9100MonVolData(FGCD_VCData vc_data, FGCD_SysState sys_state)
    {
      boolean fbsdev_statchange_record_tag = false;
       int mon_index = 0;
@@ -1201,12 +1199,13 @@
            //---------------------------------------------------------------------------//
          }
       }
    }
    }*/
   
   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 {
         System.out.println(new String(b,"utf-8"));
         System.out.println(String.format("%1.2f", 9999.5555));
      } catch (UnsupportedEncodingException e) {
         e.printStackTrace();
      }