package com.thread.devs;
|
|
import java.util.Calendar;
|
import java.util.Date;
|
|
import com.mode.Device_Inf;
|
import com.mode.Manage_Util;
|
import com.mode.Motor_State;
|
import com.sql.MysqlConnPool;
|
|
public class Manage_Simul_Motor_Thread implements Runnable{
|
public MysqlConnPool pool;
|
public Device_Inf device;
|
public Motor_State state;
|
|
public Manage_Simul_Motor_Thread(MysqlConnPool pool,Device_Inf device){
|
this.device = device;
|
this.pool = pool;
|
state = new Motor_State(device.getDevice_id());
|
}
|
|
@Override
|
public void run() {
|
RecordRealData real = new RecordRealData(pool, device);
|
new Thread(real).start();
|
|
Manage_Simul_Motor_Thread_SQL.insertOrUpdateMotor_State_Table(pool, state);
|
while(true) {
|
try {
|
createRandomData(state);
|
|
Manage_Simul_Motor_Thread_SQL.updateMotor_State_Table(pool, state);
|
|
Thread.sleep(1000);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
|
public void createRandomData(Motor_State state) {
|
state.record_time = new Date();//'¼Ç¼ʱ¼ä',
|
state.motor_curr = state.motor_curr + Manage_Util.CreateIntRandom()*Manage_Util.CreateFloat0To1();//'µç»úµçÁ÷',
|
state.motor_power = state.motor_power + Manage_Util.CreateIntRandom()*Manage_Util.CreateFloat0To1();//'µç»ú¹¦ÂÊ',
|
state.motor_speed = state.motor_speed + Manage_Util.CreateIntRandom()*Manage_Util.CreateFloat0To1();//'µç»úתËÙ',
|
state.motor_vol = state.motor_vol + Manage_Util.CreateIntRandom()*Manage_Util.CreateFloat0To1();//'µç»úµçѹ',
|
state.motor_out_tmp = state.motor_out_tmp + Manage_Util.CreateIntRandom()*Manage_Util.CreateFloat0To1();//'µç»ú³ö¿ÚζÈ',
|
state.motor_into_tmp = state.motor_into_tmp + Manage_Util.CreateIntRandom()*Manage_Util.CreateFloat0To1();//'µç»ú½ø¿ÚζÈ',
|
state.motor_torque = state.motor_torque+ Manage_Util.CreateIntRandom()*Manage_Util.CreateFloat0To1();//'µç»úת¾Ø',
|
state.motor_state = Manage_Util.CreateSwitchRanDom();//'µç»ú״̬',
|
}
|
|
public class RecordRealData implements Runnable{
|
public MysqlConnPool pool;
|
public Device_Inf device;
|
|
|
public RecordRealData(MysqlConnPool pool,Device_Inf device) {
|
this.pool = pool;
|
this.device = device;
|
}
|
|
@Override
|
public void run() {
|
Date last = new Date(0,0,0);
|
while(true) {
|
Date now = new Date();
|
try {
|
Manage_Simul_Motor_Thread_SQL.createTb_Motor_State_RealData_Table(pool, state.device_id, now);
|
Manage_Simul_Motor_Thread_SQL.createTb_Motor_State_RealData_Table(pool, state.device_id, tomorrow(now));
|
|
if((now.getTime()-last.getTime())>=1000){
|
Manage_Simul_Motor_Thread_SQL.insertMotor_State_RealData_Table(pool, state);
|
|
last = now;
|
}
|
Thread.sleep(200);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
|
/**
|
* ·µ»ØÃ÷ÌìÈÕÆÚ
|
* @param today
|
* @return
|
*/
|
public Date tomorrow(Date today) {
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTime(today);
|
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) + 1);
|
return calendar.getTime();
|
}
|
}
|