From 335a3b0a6a6f27d0f7097b27c6614c66f5946676 Mon Sep 17 00:00:00 2001 From: Administrator <1525436766@qq.com> Date: 星期四, 25 三月 2021 17:10:31 +0800 Subject: [PATCH] 添加电机历史实时数据记录 --- Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread.java | 48 +++++++++++++++++++++++ Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread_SQL.java | 57 ++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+), 2 deletions(-) diff --git a/Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread.java b/Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread.java index abc2a41..5b53d03 100644 --- a/Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread.java +++ b/Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread.java @@ -1,5 +1,6 @@ package com.thread.devs; +import java.util.Calendar; import java.util.Date; import com.mode.Device_Inf; @@ -20,6 +21,9 @@ @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 { @@ -28,7 +32,7 @@ Manage_Simul_Motor_Thread_SQL.updateMotor_State_Table(pool, state); Thread.sleep(1000); - } catch (InterruptedException e) { + } catch (Exception e) { e.printStackTrace(); } } @@ -46,5 +50,47 @@ 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(); + } } diff --git a/Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread_SQL.java b/Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread_SQL.java index d3740ba..936b34c 100644 --- a/Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread_SQL.java +++ b/Demo_Manage_Simul/src/com/thread/devs/Manage_Simul_Motor_Thread_SQL.java @@ -2,6 +2,7 @@ import java.sql.ResultSet; import java.sql.SQLException; +import java.util.Date; import com.base.Com; import com.mode.Motor_State; @@ -50,7 +51,11 @@ } } - + /** + * 更新电机实时状态 + * @param pool + * @param state + */ public static void updateMotor_State_Table(MysqlConnPool pool,Motor_State state) { String sql_str_upd = "UPDATE " + Sql_Mysql.Tb_Motor_State_Table + " SET device_id="+state.device_id+"" @@ -74,4 +79,54 @@ sql.close_con(); } } + + /** + * + * @param pool + * @param state + * @param time + */ + public static void createTb_Motor_State_RealData_Table(MysqlConnPool pool,int device_id,Date time) { + String sql_str = "CREATE TABLE IF NOT EXISTS "+Sql_Mysql.Tb_Motor_State_RealData_Table+device_id+"_"+Com.getDateTimeFormat(time, Com.DTF_Y_M_D)+" (" + + " `num` bigint(20) NOT NULL AUTO_INCREMENT," + + " `device_id` int(11) NOT NULL DEFAULT '100001' COMMENT '设备id'," + + " `record_time` datetime NOT NULL DEFAULT '2000-01-01 00:00:00' COMMENT '记录时间'," + + " `motor_curr` float NOT NULL DEFAULT '0' COMMENT '电机电流'," + + " `motor_power` float NOT NULL DEFAULT '0' COMMENT '电机功率'," + + " `motor_speed` float NOT NULL DEFAULT '0' COMMENT '电机转速'," + + " `motor_vol` float NOT NULL DEFAULT '0' COMMENT '电机电压'," + + " `motor_out_tmp` float NOT NULL DEFAULT '0' COMMENT '电机出口温度'," + + " `motor_into_tmp` float NOT NULL DEFAULT '0' COMMENT '电机进口温度'," + + " `motor_torque` float NOT NULL DEFAULT '0' COMMENT '电机转矩'," + + " `motor_state` int(11) NOT NULL DEFAULT '0' COMMENT '电机状态'," + + " PRIMARY KEY (`num`)" + + ") ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;"; + Sql_Mysql sql = new Sql_Mysql(pool.getConn()); + try { + sql.sqlMysqlExecute(sql_str); + } catch (SQLException e) { + e.printStackTrace(); + } finally { + sql.close_con(); + } + } + + /** + * 插入历史实时数据 + * @param pool + * @param state + */ + public static void insertMotor_State_RealData_Table(MysqlConnPool pool,Motor_State state) { + String sql_str_ins = " INSERT INTO " + Sql_Mysql.Tb_Motor_State_RealData_Table+state.device_id+"_"+Com.getDateTimeFormat(state.record_time, Com.DTF_Y_M_D) + + "(device_id,record_time,motor_curr,motor_power,motor_speed,motor_vol,motor_out_tmp,motor_into_tmp,motor_torque,motor_state) " + + "VALUES("+state.device_id+",'"+Com.getDateTimeFormat(state.record_time, Com.DTF_YMDhms)+"',"+state.motor_curr+","+state.motor_power+","+state.motor_speed+","+state.motor_vol+","+state.motor_out_tmp+","+state.motor_into_tmp+","+state.motor_torque+","+state.motor_state+")"; + Sql_Mysql sql = new Sql_Mysql(pool.getConn()); + try { + sql.sqlMysqlExecute(sql_str_ins); + } catch (Exception e) { + e.printStackTrace(); + } finally { + sql.close_con(); + } + } } -- Gitblit v1.9.1