package com.data.Comm; import com.data.Central_Control; import com.data.Central_RT_Data; import com.data.Central_ST_Data; import com.data.Motor_inf; import com.modbus.data.MyModbusMaster; import com.modbus.data.MyModbusUtils; import com.serotonin.modbus4j.BatchRead; import com.serotonin.modbus4j.BatchResults; import com.sql.MysqlConnPool; public class Central_Data_SocketClient_Thread implements Runnable{ public static int Dev_Type_LineScreen = 10004; //½ø³öÏ߯Á public static int Dev_Type_DcDistribute = 10005; //Ö±Á÷Ö÷Åä private MysqlConnPool pool; private Motor_inf motor; private MyModbusMaster master; public Central_Data_SocketClient_Thread(MysqlConnPool pool, Motor_inf motor) { this.motor = motor; this.pool = pool; master = new MyModbusMaster(motor.getDev_ip(), MyModbusMaster.SLAVEID_DEFAULT); } @Override public void run() { int run_count = 0; Central_DataParsing_Thread_SQL.insertOrUpdateTb_Device_StateTable(pool, motor); while(true) { try { if(run_count % 2 == 0) { if(Dev_Type_DcDistribute == motor.getDev_id()) { //¶ÁȡֱÁ÷Ö÷ÅäÐÅÏ¢ readDcDistributinf(motor.stdata); Central_DataParsing_Thread_SQL.insertOrUpdateTb_Central_Monitor_Sys_St(pool, motor.stdata); }else { //¶ÁÈ¡½ø³öÏ߯ÁÊý¾ÝÐÅÏ¢ readLineScreeninf(motor.rtdata); Central_DataParsing_Thread_SQL.insertOrUpdateTb_Central_Monitor_Sys_Rt(pool, motor.rtdata); } } Central_DataParsing_Thread_SQL.queryTb_Central_Monitor_Sys_Control(pool, motor.control); if(motor.control.control_en) { writeControlInf(motor.control); Central_DataParsing_Thread_SQL.updateTb_Central_Monitor_Sys_Control(pool,motor.control); } motor.conn_state = master.getConnectState(); if(run_count%5 == 0) { Central_DataParsing_Thread_SQL.updateTb_Device_StateTable(pool, motor); } if(run_count > 999909) { run_count = 0; } run_count ++; Thread.sleep(200); } catch (Exception e) { e.printStackTrace(); } } } /** * ¿ØÖÆÖ¸¶¨µÄ½Úµã * @param control */ private void writeControlInf(Central_Control control) { switch(control.getOp_cmd()) { case Central_Data_ComBase.CMD_SwitchClose_1st:{ // if(MyModbusUtils.writeCoil(1, true, master)) { control.setOp_cmd(Central_Data_ComBase.CMD_SwitchClose_1st_ACK); } }break; case Central_Data_ComBase.CMD_SwitchOpen_1st:{ if(MyModbusUtils.writeCoil(2, true, master)) { control.setOp_cmd(Central_Data_ComBase.CMD_SwitchOpen_1st_ACK); } }break; case Central_Data_ComBase.CMD_SwitchClose_2st:{ if(MyModbusUtils.writeCoil(3, true, master)) { control.setOp_cmd(Central_Data_ComBase.CMD_SwitchClose_2st_ACK); } }break; case Central_Data_ComBase.CMD_SwitchOpen_2st:{ if(MyModbusUtils.writeCoil(4, true, master)) { control.setOp_cmd(Central_Data_ComBase.CMD_SwitchOpen_2st_ACK); } }break; case Central_Data_ComBase.CMD_SwitchClose_3st:{ if(MyModbusUtils.writeCoil(5, true, master)) { control.setOp_cmd(Central_Data_ComBase.CMD_SwitchClose_3st); } }break; case Central_Data_ComBase.CMD_SwitchOpen_3st:{ if(MyModbusUtils.writeCoil(6, true, master)) { control.setOp_cmd(Central_Data_ComBase.CMD_SwitchOpen_3st_ACK); } }break; case Central_Data_ComBase.CMD_SwitchClose_4st:{ if(MyModbusUtils.writeCoil(7, true, master)) { control.setOp_cmd(Central_Data_ComBase.CMD_SwitchClose_4st_ACK); } }break; case Central_Data_ComBase.CMD_SwitchOpen_4st:{ if(MyModbusUtils.writeCoil(8, true, master)) { control.setOp_cmd(Central_Data_ComBase.CMD_SwitchOpen_4st_ACK); } }break; case Central_Data_ComBase.CMD_SwitchClose_5st:{ if(MyModbusUtils.writeCoil(9, true, master)) { control.setOp_cmd(Central_Data_ComBase.CMD_SwitchClose_5st_ACK); } }break; case Central_Data_ComBase.CMD_SwitchOpen_5st:{ if(MyModbusUtils.writeCoil(10, true, master)) { control.setOp_cmd(Central_Data_ComBase.CMD_SwitchOpen_5st_ACK); } }break; } } /** * ¶ÁȡֱÁ÷Ö÷ÅäÐÅÏ¢ * @param stdata */ public void readDcDistributinf(Central_ST_Data stdata) { BatchRead batch = stdata.createBatchRead(master); BatchResults res = MyModbusUtils.readMutilRegisters(batch, master); stdata.putBatchResult(res); } /** * ¶ÁÈ¡½ø³öÏ߯ÁÐÅÏ¢ * @param stdata */ public void readLineScreeninf(Central_RT_Data rtdata) { BatchRead batch = rtdata.createBatchRead(master); BatchResults res = MyModbusUtils.readMutilRegisters(batch, master); rtdata.putBatchResult(res); } }