whyclj
2020-10-15 95c0c2e94d390650d3954c30c6a7c805fe9c714c
src/com/data/PowerArk_SocketCliet_Thread.java
@@ -26,6 +26,9 @@
   public static final int CMD_Start = 1;               //启动
   public static final int CMD_Stop = 2;               //ֹͣ
   
   public static final int CMD_SUCCESS = -1;            //成功
   public static final int CMD_FAIL = 0;               //失败
   private ByteBuffer bytebuffer_for_socket_RX = ByteBuffer.allocate(1500);
   public static int PowerArk_Port = 502;
   public String   dev_ip;
@@ -58,52 +61,56 @@
      while(true) {
         try {
            /******************************************  读状态   **********************************************/
            /******************************************  读状态   **********************************************/
            {
               if(run_count % 10 == 0) {
                  //读取反馈信息0x4013-0x4030信息
               if(run_count % 2 == 0) {
                  //读取反馈信息4013-4030信息
                  basedata = new BaseData(Modbus_ComBase.READ_COIL_STATUS, Modbus_ComBase.OverTmp_Start_Addr, 18);
                  if(SocketComm(basedata.createReadData(), socket)) {
                     //读取反馈信息成功
                     PowerArk_ServerSocket_Thread_SQL.updateDynamicload_StateTable(conn_pool, state);
                     //PowerArk_ServerSocket_Thread_SQL.updateDynamicload_StateTable(conn_pool, state);
                  }
               }
               
               if(run_count % 9 == 0) {
                  //读取状态信息      0x01-0x12
               if(run_count % 2 == 0) {
                  //读取状态信息      01-12
                  basedata = new BaseData(Modbus_ComBase.READ_COIL_STATUS, Modbus_ComBase.AutoProcess1_Start_Addr, 12);
                  if(SocketComm(basedata.createReadData(), socket)) {
                     //M区状态成功 
                     PowerArk_ServerSocket_Thread_SQL.updateDynamicload_StateTable(conn_pool, state);
                     //PowerArk_ServerSocket_Thread_SQL.updateDynamicload_StateTable(conn_pool, state);
                  }
               }
               
               /*if(run_count % 8 == 0) {
                  //读取状态信息      0x8000-8013
               if(run_count % 2 == 0) {
                  //读取状态信息      8000-8013
                  basedata = new BaseData(Modbus_ComBase.READ_COIL_STATUS, Modbus_ComBase.ButtonOutPut_Start_Addr, 14);
                  if(SocketComm(basedata.createReadData(), socket)) {
                     //读取Q区状态成功 
                     PowerArk_ServerSocket_Thread_SQL.updateDynamicload_ButtonTable(conn_pool, button);
                  }
               }*/
               /*if(run_count % 10 ==0 ) {
                  //读取各个按钮状态  0x40-x0160
                  basedata = new BaseData(Modbus_ComBase.READ_COIL_STATUS, Modbus_ComBase.LocalControl_Start_Addr, 121);
                  if(SocketComm(basedata.createReadData(), socket)) {
                     //读取Q区状态成功
                     PowerArk_ServerSocket_Thread_SQL.updateDynamicload_ButtonTable(conn_pool, button);
                     //PowerArk_ServerSocket_Thread_SQL.updateDynamicload_ButtonTable(conn_pool, button);
                  }
               }
               
               if(run_count % 10 ==0 ) {
                  //读取V区各个按钮状态  0x02-x18
                  basedata = new BaseData(Modbus_ComBase.READ_HOLDING_REGISTER, Modbus_ComBase.LocalControl_Start_Addr, 17);
               if(run_count % 2 ==0 ) {
                  //读取各个按钮状态  40-0160
                  basedata = new BaseData(Modbus_ComBase.READ_COIL_STATUS, Modbus_ComBase.LocalControl_Start_Addr, 121);
                  if(SocketComm(basedata.createReadData(), socket)) {
                     //读取Q区状态成功
                     //PowerArk_ServerSocket_Thread_SQL.updateDynamicload_ButtonTable(conn_pool, button);
                  }
               }
               if(run_count % 2 ==0 ) {
                  int startaddr = Modbus_ComBase.ActualSetPower_Start_Addr;
                  //读取V区各个按钮状态  02-18
                  if(dyna_inf.getFZ_button_num() == 11) {
                     startaddr = Modbus_ComBase.ActualSetPower_Start_Addr-2;
                  }
                  basedata = new BaseData(Modbus_ComBase.READ_HOLDING_REGISTER, startaddr, 17);
                  if(SocketComm(basedata.createReadData(), socket)) {
                     //读取V区状态成功 
                     PowerArk_ServerSocket_Thread_SQL.updateDynamicload_StateTable(conn_pool, state);
                  }
               }*/
               }
               PowerArk_ServerSocket_Thread_SQL.updateDynamicload_StateTable(conn_pool, state);
               PowerArk_ServerSocket_Thread_SQL.updateDynamicload_ButtonTable(conn_pool, button);
            }
            
            /******************************************  д״̬   **********************************************/
@@ -116,8 +123,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr, 1);                  
                  control.FZ_b1 = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.FZ_b1 = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.FZ_b1 = CMD_SUCCESS;
                  }
               }
               
               if(control.FZ_b2 >= CMD_Start) {
@@ -127,8 +136,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+1, 1);                  
                  control.FZ_b2 = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.FZ_b2 = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.FZ_b2 = CMD_SUCCESS;
                  }
               }
               
               if(control.FZ_b3 >= CMD_Start) {
@@ -138,8 +149,11 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+2, 1);                  
                  control.FZ_b3 = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.FZ_b3 = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.FZ_b3 = CMD_SUCCESS;
                  }
               }
               
               if(control.FZ_b4 >= CMD_Start) {
@@ -149,8 +163,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+3, 1);                  
                  control.FZ_b4 = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.FZ_b4 = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.FZ_b4 = CMD_SUCCESS;
                  }
               }
               
               if(control.FZ_b5 >= CMD_Start) {
@@ -160,8 +176,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+4, 1);                  
                  control.FZ_b5 = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.FZ_b5 = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.FZ_b5 = CMD_SUCCESS;
                  }
               }
               
               if(control.FZ_b6 >= CMD_Start) {
@@ -171,8 +189,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+5, 1);                  
                  control.FZ_b6 = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.FZ_b6 = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.FZ_b6 = CMD_SUCCESS;
                  }
               }
               
               if(control.FZ_b7 >= CMD_Start) {
@@ -182,8 +202,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+6, 1);                  
                  control.FZ_b7 = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.FZ_b7 = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.FZ_b7 = CMD_SUCCESS;
                  }
               }
               
               if(control.FZ_b8 >= CMD_Start) {
@@ -193,8 +215,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+7, 1);                  
                  control.FZ_b8 = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.FZ_b8 = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.FZ_b8 = CMD_SUCCESS;
                  }
               }
               
               if(control.FZ_b9 >= CMD_Start) {
@@ -204,8 +228,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+8, 1);                  
                  control.FZ_b9 = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.FZ_b9 = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)){
                     control.FZ_b9 = CMD_SUCCESS;
                  }
               }
               
               if(control.FZ_b10 >= CMD_Start) {
@@ -215,8 +241,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+9, 1);                  
                  control.FZ_b10 = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.FZ_b10 = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.FZ_b10 = CMD_FAIL;
                  }
               }
               
               if(control.FZ_b11 >= CMD_Start) {
@@ -226,8 +254,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+10, 1);                  
                  control.FZ_b11 = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.FZ_b11 = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.FZ_b11 = CMD_SUCCESS;
                  }
               }
               
               if(control.start_auto >= CMD_Start) {
@@ -237,8 +267,11 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.StartAutoLoad_Start_Addr, 1);                  
                  control.start_auto = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.start_auto = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.start_auto = CMD_FAIL;
                  }
               }
               
               if(control.stop_auto >= CMD_Start) {
@@ -248,8 +281,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.StopAutoLoad_Start_Addr, 1);                  
                  control.stop_auto = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.stop_auto = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.stop_auto = CMD_SUCCESS;
                  }
               }
               
               if(control.sudden_crease >= CMD_Start) {
@@ -259,8 +294,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.SuddenCrease_Start_Addr, 1);                  
                  control.sudden_crease = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.sudden_crease = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.sudden_crease = CMD_SUCCESS;
                  }
               }
               
               if(control.all_open >= CMD_Start) {
@@ -270,8 +307,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.AllOpenBreak_Start_Addr, 1);                  
                  control.all_open = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.all_open = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.all_open = CMD_FAIL;
                  }
               }
               
               if(control.FZ_autostate1 >= CMD_Start) {
@@ -281,8 +320,10 @@
                  }
                  //FZ自动状态1
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.AutoProcess1_Start_Addr, 1);                  
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.FZ_autostate1 = CONTROL_OFF;
                  control.FZ_autostate1 = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.FZ_autostate1 = CMD_SUCCESS;
                  }
               }
               
               if(control.FZ_autostate2 >= CMD_Start) {
@@ -292,8 +333,10 @@
                  }
                  //FZ自动状态2
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.AutoProcess2_Start_Addr, 1);                  
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.FZ_autostate2 = CONTROL_OFF;
                  control.FZ_autostate2 = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.FZ_autostate2 = CMD_SUCCESS;
                  }
               }
               
               if(control.FZ_autostate3 >= CMD_Start) {
@@ -303,8 +346,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.AutoProcess3_Start_Addr, 1);                  
                  control.FZ_autostate3 = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.FZ_autostate3 = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.FZ_autostate3 = CMD_SUCCESS;
                  }
               }
               
               if(control.FZ_autostate4 >= CMD_Start) {
@@ -314,8 +359,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.AutoProcess4_Start_Addr, 1);                  
                  control.FZ_autostate4 = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.FZ_autostate4 = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.FZ_autostate4 = CMD_SUCCESS;
                  }
               }
               
               if(control.FZ_autostate5 >= CMD_Start) {
@@ -325,8 +372,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.AutoProcess5_Start_Addr, 1);                  
                  control.FZ_autostate5 = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.FZ_autostate5 = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.FZ_autostate5 = CMD_SUCCESS;
                  }
               }
               
               if(control.local_control >= CMD_Start) {
@@ -336,8 +385,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.LocalControl_Start_Addr, 1);                  
                  control.local_control = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.local_control = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.local_control = CMD_SUCCESS;
                  }
               }
               
               if(control.back_control >= CMD_Start) {
@@ -347,8 +398,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.BackControl_Start_Addr, 1);                  
                  control.back_control = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.back_control = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.back_control = CMD_SUCCESS;
                  }
               }
               
               if(control.central_control >= CMD_Start) {
@@ -358,8 +411,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.CenterControl_Start_Addr, 1);                  
                  control.central_control = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.central_control = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.central_control = CMD_SUCCESS;
                  }
               }
               
               if(control.inter_volume_M200 >= CMD_Start) {
@@ -369,8 +424,10 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Middle_Start_Addr, 1);                  
                  control.inter_volume_M200 = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.inter_volume_M200 = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.inter_volume_M200 = CMD_SUCCESS;
                  }
               }
               
               if(control.fan_button >= CMD_Start) {
@@ -380,15 +437,40 @@
                     code_value = CONTROL_ON;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Fan_Button_Start_Addr, 1);                  
                  control.fan_button = CONTROL_OFF;
                  SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket);
                  control.fan_button = CMD_FAIL;
                  if(SocketComm(basedata.createSingleCollWiriteData(BaseData.createButtonByte(code_value)), socket)) {
                     control.fan_button = CMD_SUCCESS;
                  }
               }
               
               if(control.set_power >= CMD_Start) {
                  //设定功率
                  basedata = new BaseData(Modbus_ComBase.WRITE_MULTIPLE_REGISTER, Modbus_ComBase.SetPower_Start_Addr, 1);
                  control.set_power = CONTROL_OFF;
                  SocketComm(basedata.createWiriteData(BaseData.createFloatByte(control.set_power)), socket);
                  int addr = Modbus_ComBase.SetPower_Start_Addr;
                  if(dyna_inf.getFZ_button_num() ==11) {
                     addr = 4;
                     basedata = new BaseData(Modbus_ComBase.WRITE_MULTIPLE_REGISTER, addr, 1);
                     if(SocketComm(basedata.createWiriteData(BaseData.createIntByte((int)control.set_power)), socket)) {
                        control.set_power = CMD_SUCCESS;
                     }
                  }else {
                     basedata = new BaseData(Modbus_ComBase.WRITE_MULTIPLE_REGISTER, addr, 2);
                     if(SocketComm(basedata.createWiriteData(BaseData.createFloatByte(control.set_power)), socket)) {
                        control.set_power = CMD_SUCCESS;
                     }
                  }
                  control.set_power = CMD_FAIL;
               }
               if(control.interval_time >= CMD_Start) {
                  //间隔时间
                  int addr = Modbus_ComBase.InterTime_Start_Addr;
                  if(dyna_inf.getFZ_button_num() == 11) {
                     addr = 6;
                  }
                  basedata = new BaseData(Modbus_ComBase.WRITE_MULTIPLE_REGISTER, addr, 1);
                  if(SocketComm(basedata.createWiriteData(BaseData.createIntByte(control.interval_time)), socket)) {
                     control.interval_time = CMD_SUCCESS;
                  }
                  control.interval_time = CMD_FAIL;
               }
               //System.out.println(control);
               PowerArk_ServerSocket_Thread_SQL.updateDynamicload_ControlTable(conn_pool, control);               
@@ -404,7 +486,7 @@
            if(run_count > 8999999) {
               run_count = 0;
            }
            Thread.sleep(50);
            Thread.sleep(10);
         } catch (Exception e) {
            //e.printStackTrace();
         }
@@ -414,14 +496,18 @@
   public boolean SocketComm(byte[] bytedata,Socket socket) throws InterruptedException
    { 
      boolean res_t = false;
      InputStream in = null;
      OutputStream out = null;
      try
      {
         reConnectClient();
         //reConnectClient();
         socket = new Socket();
         socket.connect(new InetSocketAddress(dev_ip, PowerArk_Port), 5000);
         socket.setSoTimeout(3000);
           if(socket != null)
           {
              socket.setSoTimeout(3000);
              InputStream in = socket.getInputStream();
              OutputStream out = socket.getOutputStream();
              in = socket.getInputStream();
              out = socket.getOutputStream();
              //----------------- clear rx buff for tcp resend packet ----------------//
              byte[] rx_buf_t = new byte[1024];
              //----------------------------------------------------------------------//
@@ -429,10 +515,8 @@
              bytebuffer_for_socket_RX.clear();
              //--------------------- socket write -----------------------------------//
              //byte[] b = makeCommBuf(cmd, bf);
              System.err.println("发送数据:"+ComFn.bytesToHexString(bytedata, bytedata.length));
              //System.err.println("发送数据:"+ComFn.bytesToHexString(bytedata, bytedata.length));
              Date d1 = new Date();
              int rx_read_time_out = 0; 
              //int rx_len = 0;
              //System.err.println("TX: " + ComFn.bytesToHexString(b, b.length));
@@ -460,12 +544,13 @@
              bytebuffer_for_socket_RX.flip();
              Date d2 = new Date();
              long comm_tms = (d2.getTime() - d1.getTime());
              if(comm_tms < 200) {
                 Thread.sleep(200 - comm_tms);
              if(comm_tms < 50) {
                 Thread.sleep(50 - comm_tms);
              }
              //System.err.println("通讯时长:" + comm_tms);
              byte[] buffer = new byte[bytebuffer_for_socket_RX.limit()];
              bytebuffer_for_socket_RX.get(buffer);
              System.err.println("接收数据"+ComFn.bytesToHexString(buffer, buffer.length));
              //System.err.println("接收数据"+ComFn.bytesToHexString(buffer, buffer.length));
              if(true == getDataFromCommBuf(buffer)) {
                 connCount ++;
                 res_t = true;
@@ -479,7 +564,27 @@
           errCount++;
           connerrCount++;
       } finally {
          if(in != null) {
             try {
               in.close();
            } catch (IOException e) {
               e.printStackTrace();
            }
          }
          if(out != null) {
             try {
               out.close();
            } catch (IOException e) {
               e.printStackTrace();
            }
          }
          if(socket != null) {
             try {
               socket.close();
            } catch (IOException e) {
               e.printStackTrace();
            }
          }
       }      
      return res_t;
    }
@@ -497,7 +602,7 @@
              //读取线圈数据成功[4013-4030]
              if(baseData.addrstart == Modbus_ComBase.OverTmp_Start_Addr) {
                 if(dyna_inf.putReadIBackByteBuffer(bf)) {
                    System.out.println("读取I区数据成功4013-4030");
                    //System.out.println("读取I区数据成功4013-4030");
                    issuccess = true;
                 }          
              }
@@ -505,7 +610,7 @@
              //读取M区状态成功[01 - 12]
              if(baseData.addrstart == Modbus_ComBase.AutoProcess1_Start_Addr) {
                 if(dyna_inf.putReadMBackByteBuffer(bf)) {
                    System.out.println("读取M区数据成功01-12");
                    //System.out.println("读取M区数据成功01-12");
                    issuccess = true;
                 } 
              }
@@ -514,7 +619,7 @@
              if(baseData.addrstart == Modbus_ComBase.ButtonOutPut_Start_Addr) {
                 //System.out.println("%%%%%%%%%%%%%%%%%%%%");
                 if(dyna_inf.putReadQBackByteBuffer(bf)) {
                    System.out.println("读取Q区数据成功8000-8013");
                    //System.out.println("读取Q区数据成功8000-8013");
                    issuccess = true;
                 } 
              }
@@ -522,7 +627,7 @@
              //读取M区各个控制的状态[0040-0160]
              if(baseData.addrstart == Modbus_ComBase.LocalControl_Start_Addr) {
                 if(dyna_inf.putReadMControlStateByteBuffer(bf)) {
                    System.out.println("读取M区数据成功0040-0160");
                    //System.out.println("读取M区数据成功0040-0160");
                    issuccess = true;
                 } 
              }
@@ -530,18 +635,27 @@
              
              
           }else if(baseData.funcode == Modbus_ComBase.READ_HOLDING_REGISTER) {
              if(baseData.addrstart == Modbus_ComBase.ActualSetPower_Start_Addr) {
              if(baseData.addrstart == Modbus_ComBase.ActualSetPower_Start_Addr ) {
                 //读取V区各个数据状态[02-18]
                 if(dyna_inf.putReadVBackByteBuffer(bf)) {
                    System.out.println("读取V区数据成功02-18");
                    //System.out.println("读取V区数据成功02-18");
                    issuccess = true;
                 }
              }else if(baseData.addrstart == Modbus_ComBase.ActualSetPower_Start_Addr-2) {
                 //读取V区各个数据状态[01-8]
                 if(dyna_inf.putReadVLongBackByteBuffer(bf)) {
                    //System.out.println("读取V区数据成功01-08");
                    issuccess = true;
                 }
              }
              
           }else if(baseData.funcode == Modbus_ComBase.WRITE_SINGLE_COIL) {
              //单点写入成功
              if(baseData.funcode == BaseData.SINGLEWRITE_BYTECOUNT) {
                 issuccess = true;
                 //System.out.println("写入成功");
              }
           }
        }       
      return issuccess;
   }
@@ -553,12 +667,12 @@
   public void reConnectClient() {
      try {
         if(socket == null || socket.isClosed() || errCount > 4) {
            if(socket != null) {
            /*if(socket != null) {
               socket.close();
            }
            }*/
            socket = new Socket();
            socket.connect(new InetSocketAddress(dev_ip, PowerArk_Port), 5000);
            socket.setSoTimeout(5000);
            socket.setSoTimeout(3000);
            errCount = 0;
         }
      } catch (SocketException e) {