From 95c0c2e94d390650d3954c30c6a7c805fe9c714c Mon Sep 17 00:00:00 2001 From: whyclj <1525436766@qq.com> Date: 星期四, 15 十月 2020 18:23:18 +0800 Subject: [PATCH] 负载添加历史实时数据记录功能 --- src/com/data/PowerArk_SocketCliet_Thread.java | 316 +++++++++++++++++++++++++++++++++++---------------- 1 files changed, 215 insertions(+), 101 deletions(-) diff --git a/src/com/data/PowerArk_SocketCliet_Thread.java b/src/com/data/PowerArk_SocketCliet_Thread.java index f1c0500..60a9f5f 100644 --- a/src/com/data/PowerArk_SocketCliet_Thread.java +++ b/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) { -- Gitblit v1.9.1