充放电一体机FGCD通信程序【二期初版】
BattMonitor_FGCD-A059NT/src/com/dev/fgcd/comm/FGCD_SocketClient_Thread.java
@@ -1,12 +1,11 @@
package com.dev.fgcd.comm;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.Date;
@@ -15,23 +14,17 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.battmonitor.base.Com;
import com.battmonitor.data.BattData_RT;
import com.battmonitor.data.BattData_RT_Array;
import com.battmonitor.data.BattData_RT_SQL;
import com.battmonitor.sql.MysqlConnPool;
import com.dev.btse.comm.FBS9100S_SocketClient2;
import com.dev.btse.comm.FBS9100_Task_Thread_SQL;
import com.dev.btse.data.ComFn;
import com.dev.btse.data.Ecb_Aes;
import com.dev.btse.data.FBS9100_ComBase;
import com.dev.btse.data.FBS9100_ParamDischarge;
import com.dev.btse.data.FBS9100_SysState;
import com.dev.btse.data.FBS9100_VCData;
import com.dev.fgcd.data.FGCD_BattTestParam;
import com.dev.fgcd.data.FGCD_Cmd;
import com.dev.fgcd.data.FGCD_ComBase;
import com.dev.fgcd.data.FGCD_ComBuf;
import com.dev.fgcd.data.FGCD_OnlineInfo;
import com.dev.fgcd.data.FGCD_StateAndParam;
import com.dev.fgcd.data.FGCD_SysState;
import com.dev.fgcd.data.FGCD_TestFBOFile;
@@ -47,6 +40,7 @@
    
    private FGCD_BattTestParam testParam;           //电池测试参数
    private FGCD_SysState sysState;                //ϵͳ״̬
    private FGCD_OnlineInfo onlineInfo;               //在线模块状态
    private FGCD_Cmd m_FBS_Cmd = new FGCD_Cmd();
    public FGCD_TestFBOFile fboFile;            //历史数据文件
@@ -83,6 +77,7 @@
        testParam = new FGCD_BattTestParam();
        m_StatAndParam = new FGCD_StateAndParam();
        sysState = m_StatAndParam.getSysState();
        onlineInfo = m_StatAndParam.getOnlineInfo();
        vc_data = new FGCD_VCData();
        logger = LogManager.getLogger(this);
    }
@@ -195,8 +190,7 @@
          if(m_BattMonCount > (FGCD_ComBase.MonomerCountMax-120)) {
             m_BattMonCount = (FGCD_ComBase.MonomerCountMax-120);
          }
          logger.warn("DevId: " + m_StatAndParam.dev_id + ", DevVer: " + m_StatAndParam.m_DevVersion
                     + " - FBS9100S_SocketServer Thread Started");
          logger.warn("DevId: " + m_StatAndParam.dev_id + " - FBS9100S_SocketClient Thread Started");
       }
        while(FGCD_Thread_Mark) {           
           try {
@@ -264,6 +258,21 @@
                  SocketComm(FGCD_ComBase.CMD_PAUSEHHTEST, ByteBuffer.allocate(0));
               }
               
               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);
                  //设置电池组号
                  SocketComm(FGCD_ComBase.CMD_SETNOWWORKBATT, tmp_set_pm.groupCount);
                  tmp_set_pm = null;
               }else if(FGCD_ComBase.CMD_StartShowPic == m_StatAndParam.op_cmd) {
                  //开始显示图片
                  SocketComm(FGCD_ComBase.CMD_STARTSHOWPIC, 1);
               }else if(FGCD_ComBase.CMD_StopShowPic == m_StatAndParam.op_cmd) {
                  //停止显示图片
                  SocketComm(FGCD_ComBase.CMD_STARTSHOWPIC, 0);
               }
            }
            /************************    清除告警      *****************************************************/
            {               
@@ -310,8 +319,24 @@
               readCharData = false;
            }
            
            if(DevReadCount % 50 == 0) {
               //15s读取一次版本信息
               //logger.info("获取设备版本号");
               FGCD_Cmd tmp_cmd = new FGCD_Cmd(FGCD_ComBase.CMD_READDEVICEVERSION);
               SocketComm(tmp_cmd, ByteBuffer.allocate(0));
               tmp_cmd = null;
            }
            if(DevReadCount % 13 == 0) {
               //
               logger.info("获取在线模块状态");
               FGCD_Cmd tmp_cmd = new FGCD_Cmd(FGCD_ComBase.CMD_READONLINEMODEINFO);
               SocketComm(tmp_cmd, ByteBuffer.allocate(0));
               tmp_cmd = null;
            }
            DevReadCount++;
            if(DevReadCount >= 100) {
            if(DevReadCount >= 2400) {
               DevReadCount = 0;
            }
         } catch (Exception e) {
@@ -930,9 +955,48 @@
               if(fboFile.putByteBuffer(bf,m_FBS_Cmd.Db2)) {
                  //读取文件列表成功
                  fboFile.op_cmd = FGCD_ComBase.CMD_ReadFBDFile_ACK;
                  System.out.println("读取文件列表成功");
                  logger.debug("dev_id:"+m_StatAndParam.dev_id+"读取文件列表成功");
                  FGCD_SocketClient_Thread_SQL.updateTb_Fgcd_Filedownload_Table(m_ConnPool, fboFile);
                  isSuccess = true;
               }
            }else if(FGCD_ComBase.CMD_READDEVICEVERSION == m_FBS_Cmd.CMD) {
               if(bf.limit() >0) {
                  byte[] ver = new byte[bf.limit()];
                  bf.get(ver);
                  //System.err.println(ComFn.bytesToHexString(ver, ver.length));
                  try {
                  m_StatAndParam.m_DevVersion = new String(ver, "utf-8");
                  logger.debug("dev_id:"+m_StatAndParam.dev_id+"\t读取设备版本号成功:"+m_StatAndParam.m_DevVersion);
                  isSuccess = true;
               } catch (UnsupportedEncodingException e) {
                  e.printStackTrace();
               }
               }
            }else if(FGCD_ComBase.CMD_READONLINEMODEINFO == m_FBS_Cmd.CMD) {
               if(onlineInfo.putByteBuffer(bf)) {
                  logger.debug("dev_id:"+m_StatAndParam.dev_id+"\t 读取在线模块信息成功"+onlineInfo);
                  isSuccess = true;
               }
            }else if(FGCD_ComBase.CMD_SETNOWWORKBATT == m_FBS_Cmd.CMD) {
               if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
                  m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_SetNowBatt_ACK;
                   FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                    isSuccess = true;
                    logger.debug("dev_id:"+m_StatAndParam.dev_id+"\t 设置电池组号" + testParam.groupCount + "成功");
               }
            }else if(FGCD_ComBase.CMD_STARTSHOWPIC == m_FBS_Cmd.CMD) {
               if(FGCD_ComBase.RETURN_SUCCESS == m_FBS_Cmd.RecState) {
                  if(FGCD_ComBase.CMD_StartShowPic == m_StatAndParam.op_cmd) {
                     m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StartShowPic_ACK;
                     logger.debug("dev_id:"+m_StatAndParam.dev_id+"\t 开始显示内窥镜成功·");
                  } else if(FGCD_ComBase.CMD_StopShowPic == m_StatAndParam.op_cmd){
                     m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_StopShowPic_ACK;
                     logger.debug("dev_id:"+m_StatAndParam.dev_id+"\t 停止显示内窥镜成功·");
                  } else {
                     m_StatAndParam.op_cmd_ack = FGCD_ComBase.CMD_NULL;
                  }
                   FGCD_SocketClient_Thread_SQL.updateFbs9100SetParamCmdAckBydev_id(m_ConnPool,m_StatAndParam);
                    isSuccess = true;
               }
            }
        }
@@ -1020,6 +1084,12 @@
       }
    }
   public static void main(String[] args) {
      System.out.println(0x80);
      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"));
      } catch (UnsupportedEncodingException e) {
         e.printStackTrace();
      }
   }
}