package com.dev.base.data;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
import com.data.PowerArk_Task_SQL;
|
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 Dynamicload_SocketClient_Thread implements Runnable {
|
public MysqlConnPool conn_pool;
|
public Dynamicload_inf dinf;
|
|
public Dynamicload_button dbutton;
|
public Dynamicload_control dcontrol;
|
public Dynamicload_state dstate;
|
|
public MyModbusMaster master;
|
|
public Dynamicload_SocketClient_Thread(Dynamicload_inf dinf, MysqlConnPool conn_pool) {
|
this.conn_pool = conn_pool;
|
this.dinf = dinf;
|
|
dbutton = new Dynamicload_button(dinf.getDev_id());
|
dcontrol = new Dynamicload_control(dinf.getDev_id());
|
dstate = new Dynamicload_state(dinf.getDev_id(),dinf.getFZ_button_num());
|
master = new MyModbusMaster(dinf.getDev_ip(), MyModbusMaster.SLAVEID_DEFAULT);
|
}
|
|
@Override
|
public void run() {
|
// TODO Auto-generated method stub
|
int runCount = 0;
|
Date last = new Date();
|
while (true) {
|
try {
|
if (runCount % 2 == 0) {
|
// *************************** ¸üиºÔذ´Å¥ÐÅÏ¢******************************//*
|
|
// Date t1 = new Date();
|
readMutilElectrical_button(master, dbutton);
|
PowerArk_Task_SQL.updateDynamicload_ButtonTable(conn_pool, dbutton);
|
// System.out.println("RT:"+(new Date().getTime() - t1.getTime()));
|
|
// Date t2 = new Date();
|
// **************************** ¸üиºÔØ×´Ì¬ÐÅÏ¢ *****************************//*
|
readMutilElectrical_state(master, dstate);
|
PowerArk_Task_SQL.updateDynamicload_StateTable(conn_pool, dstate);
|
// System.out.println("State:"+(new Date().getTime() - t2.getTime()));
|
}
|
|
//System.err.println(dinf.dev_id + "=====" + ((new Date()).getTime() - last.getTime()));
|
last = new Date();
|
|
if (runCount % 10 == 0) {
|
// ¸üе±Ç°É豸ip
|
master.setTarget_ip(dinf.dev_ip);
|
}
|
if (runCount > 999900) {
|
runCount = 0;
|
}
|
runCount++;
|
Thread.sleep(50);
|
} catch (Exception e) {
|
try {
|
Thread.sleep(1000);
|
} catch (InterruptedException e1) {
|
// e1.printStackTrace();
|
}
|
e.printStackTrace();
|
}
|
|
}
|
|
}
|
/**
|
* ¶àµã¶ÁÈ¡¸ºÔذ´Å¥×´Ì¬
|
* @param master
|
* @param dbutton
|
*/
|
public void readMutilElectrical_button(MyModbusMaster master, Dynamicload_button dbutton) {
|
BatchRead<Integer> batch = dbutton.createBatchRead(master);
|
BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master);
|
dbutton.putBatchResult(res);
|
}
|
|
/**
|
* ¸üиºÔØ×´Ì¬ÐÅÏ¢
|
* @param master
|
* @param dstate
|
*/
|
public void readMutilElectrical_state(MyModbusMaster master, Dynamicload_state dstate) {
|
BatchRead<Integer> batch = dstate.createBatchRead(master,dstate.fz_button_num);
|
BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master);
|
dstate.putBatchResult(res);
|
}
|
}
|