package com.data; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetSocketAddress; import java.net.Socket; import java.net.SocketException; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.Date; import com.base.ComFn; import com.dev.base.data.Dynamicload_button; import com.dev.base.data.Dynamicload_control; import com.dev.base.data.Dynamicload_inf; import com.dev.base.data.Dynamicload_state; import com.modbus.util.BaseData; import com.modbus.util.Modbus_ComBase; import com.sql.MysqlConnPool; public class PowerArk_SocketCliet_Thread implements Runnable{ public static final int CONTROL_ON = 0xFF00; //Æô¶¯ public static final int CONTROL_OFF = 0x0000; //Í£Ö¹ 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; public MysqlConnPool conn_pool; public Dynamicload_inf dyna_inf; public Dynamicload_button button; //É豸°´Å¥ public Dynamicload_control control; //É豸¿ØÖÆ public Dynamicload_state state; //É豸״̬ public int connerrCount = 0; //×Ü´íÎó¼ÆÊý public int connCount = 0; //×ÜͨѶ¼ÆÊý public int errCount = 0; //Á¬Ðø´íÎóͨѶ¼ÆÊý public Socket socket; public BaseData basedata; public PowerArk_SocketCliet_Thread(MysqlConnPool conn_pool,Dynamicload_inf dyna_inf) { this.conn_pool = conn_pool; this.dyna_inf = dyna_inf; dev_ip = dyna_inf.dev_ip; button = dyna_inf.button; control = dyna_inf.control; state = dyna_inf.state; } @Override public void run() { int run_count = 0; while(true) { try { /****************************************** ¶Á״̬ **********************************************/ { 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); } } 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); } } 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 % 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_ButtonTable(conn_pool, button); } /****************************************** д״̬ **********************************************/ { PowerArk_SocketClient_Thread_SQL.queryPowerArkControl(conn_pool, control); if(control.FZ_b1 >= CMD_Start) { //´ò¿ª°´Å¥1 int code_value = CONTROL_OFF; if(control.FZ_b1 == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr, 1); 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) { //´ò¿ª°´Å¥2 int code_value = CONTROL_OFF; if(control.FZ_b2 == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+1, 1); 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) { //´ò¿ª°´Å¥3 int code_value = CONTROL_OFF; if(control.FZ_b3 == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+2, 1); 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) { //´ò¿ª°´Å¥4 int code_value = CONTROL_OFF; if(control.FZ_b4 == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+3, 1); 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) { //´ò¿ª°´Å¥5 int code_value = CONTROL_OFF; if(control.FZ_b5 == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+4, 1); 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) { //´ò¿ª°´Å¥6 int code_value = CONTROL_OFF; if(control.FZ_b6 == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+5, 1); 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) { //´ò¿ª°´Å¥7 int code_value = CONTROL_OFF; if(control.FZ_b7 == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+6, 1); 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) { //´ò¿ª°´Å¥8 int code_value = CONTROL_OFF; if(control.FZ_b8 == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+7, 1); 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) { //´ò¿ª°´Å¥9 int code_value = CONTROL_OFF; if(control.FZ_b9 == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+8, 1); 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) { //´ò¿ª°´Å¥10 int code_value = CONTROL_OFF; if(control.FZ_b10 == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+9, 1); 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) { //´ò¿ª°´Å¥11 int code_value = CONTROL_OFF; if(control.FZ_b11 == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Button_Start_Addr+10, 1); 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) { //Æô¶¯×Ô¶¯¼ÓÔØ int code_value = CONTROL_OFF; if(control.start_auto == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.StartAutoLoad_Start_Addr, 1); 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) { //Í£Ö¹×Ô¶¯¼ÓÔØ int code_value = CONTROL_OFF; if(control.stop_auto == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.StopAutoLoad_Start_Addr, 1); 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) { //Í»¼Óͻж int code_value = CONTROL_OFF; if(control.sudden_crease == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.SuddenCrease_Start_Addr, 1); 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) { //È«²¿·ÖÕ¢ int code_value = CONTROL_OFF; if(control.all_open == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.AllOpenBreak_Start_Addr, 1); 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) { int code_value = CONTROL_OFF; if(control.FZ_autostate1 == CMD_Start) { code_value = CONTROL_ON; } //FZ×Ô¶¯×´Ì¬1 basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.AutoProcess1_Start_Addr, 1); 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) { int code_value = CONTROL_OFF; if(control.FZ_autostate2 == CMD_Start) { code_value = CONTROL_ON; } //FZ×Ô¶¯×´Ì¬2 basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.AutoProcess2_Start_Addr, 1); 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) { //FZ×Ô¶¯×´Ì¬3 int code_value = CONTROL_OFF; if(control.FZ_autostate3 == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.AutoProcess3_Start_Addr, 1); 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) { //FZ×Ô¶¯×´Ì¬4 int code_value = CONTROL_OFF; if(control.FZ_autostate4 == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.AutoProcess4_Start_Addr, 1); 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) { //FZ×Ô¶¯×´Ì¬5 int code_value = CONTROL_OFF; if(control.FZ_autostate5 == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.AutoProcess5_Start_Addr, 1); 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) { //¾ÍµØ¿ØÖÆ int code_value = CONTROL_OFF; if(control.local_control == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.LocalControl_Start_Addr, 1); 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) { //ºǫ́¿ØÖÆ int code_value = CONTROL_OFF; if(control.back_control == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.BackControl_Start_Addr, 1); 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) { //ÖпؿØÖÆ int code_value = CONTROL_OFF; if(control.central_control == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.CenterControl_Start_Addr, 1); 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) { //ÖпؿØÖÆ int code_value = CONTROL_OFF; if(control.inter_volume_M200 == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Middle_Start_Addr, 1); 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) { //·ç»ú°´Å¥ int code_value = CONTROL_OFF; if(control.inter_volume_M200 == CMD_Start) { code_value = CONTROL_ON; } basedata = new BaseData(Modbus_ComBase.WRITE_SINGLE_COIL, Modbus_ComBase.Fan_Button_Start_Addr, 1); 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) { //É趨¹¦ÂÊ 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); } if(connerrCount >89999999) { connerrCount = 0; } if(connCount > 8999999) { connCount = 0; } run_count ++; if(run_count > 8999999) { run_count = 0; } Thread.sleep(10); } catch (Exception e) { //e.printStackTrace(); } } } public boolean SocketComm(byte[] bytedata,Socket socket) throws InterruptedException { boolean res_t = false; InputStream in = null; OutputStream out = null; try { //reConnectClient(); socket = new Socket(); socket.connect(new InetSocketAddress(dev_ip, PowerArk_Port), 5000); socket.setSoTimeout(3000); if(socket != null) { in = socket.getInputStream(); out = socket.getOutputStream(); //----------------- clear rx buff for tcp resend packet ----------------// byte[] rx_buf_t = new byte[1024]; //----------------------------------------------------------------------// bytebuffer_for_socket_RX.order(ByteOrder.BIG_ENDIAN); bytebuffer_for_socket_RX.clear(); //--------------------- socket write -----------------------------------// //byte[] b = makeCommBuf(cmd, bf); //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)); out.write(bytedata); out.flush(); while(true) { if(in.available() > 0) { rx_read_time_out = 0; int rx_len_t = in.read(rx_buf_t); if((bytebuffer_for_socket_RX.position()+rx_len_t) < (bytebuffer_for_socket_RX.capacity()-1)) { bytebuffer_for_socket_RX.put(rx_buf_t, 0, rx_len_t); } } else { rx_read_time_out++; if((bytebuffer_for_socket_RX.position()>8) && (rx_read_time_out>10)){ break; } if(rx_read_time_out > 220) { break; } } Thread.sleep(10); } bytebuffer_for_socket_RX.flip(); Date d2 = new Date(); long comm_tms = (d2.getTime() - d1.getTime()); 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)); if(true == getDataFromCommBuf(buffer)) { connCount ++; res_t = true; } else { errCount ++; connerrCount ++; res_t = false; } } } catch (IOException e) { 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; } public boolean getDataFromCommBuf(byte[] bytes) { boolean issuccess = false; ByteBuffer bf = ByteBuffer.allocate(bytes.length); bf.order(ByteOrder.BIG_ENDIAN); bf.put(bytes); bf.flip(); BaseData baseData = new BaseData(); if(baseData.putByteBuffer(bf)) { //»ñÈ¡·µ»ØÊý¾Ý³É¹¦ if(baseData.funcode == Modbus_ComBase.READ_COIL_STATUS) { //¶ÁÈ¡ÏßȦÊý¾Ý³É¹¦[4013-4030] if(baseData.addrstart == Modbus_ComBase.OverTmp_Start_Addr) { if(dyna_inf.putReadIBackByteBuffer(bf)) { //System.out.println("¶ÁÈ¡IÇøÊý¾Ý³É¹¦4013-4030"); issuccess = true; } } //¶ÁÈ¡MÇø×´Ì¬³É¹¦[01 - 12] if(baseData.addrstart == Modbus_ComBase.AutoProcess1_Start_Addr) { if(dyna_inf.putReadMBackByteBuffer(bf)) { //System.out.println("¶ÁÈ¡MÇøÊý¾Ý³É¹¦01-12"); issuccess = true; } } //¶ÁÈ¡QÇø×´Ì¬³É¹¦[8000-8013] if(baseData.addrstart == Modbus_ComBase.ButtonOutPut_Start_Addr) { //System.out.println("%%%%%%%%%%%%%%%%%%%%"); if(dyna_inf.putReadQBackByteBuffer(bf)) { //System.out.println("¶ÁÈ¡QÇøÊý¾Ý³É¹¦8000-8013"); issuccess = true; } } //¶ÁÈ¡MÇø¸÷¸ö¿ØÖƵÄ״̬[0040-0160] if(baseData.addrstart == Modbus_ComBase.LocalControl_Start_Addr) { if(dyna_inf.putReadMControlStateByteBuffer(bf)) { //System.out.println("¶ÁÈ¡MÇøÊý¾Ý³É¹¦0040-0160"); issuccess = true; } } }else if(baseData.funcode == Modbus_ComBase.READ_HOLDING_REGISTER) { if(baseData.addrstart == Modbus_ComBase.ActualSetPower_Start_Addr ) { //¶ÁÈ¡VÇø¸÷¸öÊý¾Ý״̬[02-18] if(dyna_inf.putReadVBackByteBuffer(bf)) { //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; } /** * ÖØÐ»ñÈ¡Á¬½Ó¶ÔÏó */ public void reConnectClient() { try { if(socket == null || socket.isClosed() || errCount > 4) { /*if(socket != null) { socket.close(); }*/ socket = new Socket(); socket.connect(new InetSocketAddress(dev_ip, PowerArk_Port), 5000); socket.setSoTimeout(3000); errCount = 0; } } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }