📄 sensor.cs
字号:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data;
using System.Timers;
namespace simular_data
{
/// <summary>
/// sensor 的摘要说明。
/// </summary>
///
public class Sensor
{
public int Se_ID; //传感器ID
public string Se_Name; //传感器名称
public string Se_Item; //传感器监测项目
public int Se_Sub_ID; //传感器所属子系统ID
public System.Timers.Timer aTimer = new System.Timers.Timer(10000);
public string Se_TableName; //传感器日志表名
public double Se_Value; //实时监测数据值
public string Se_Time; //实时监测数据产生时间
public Sensor(string str) //构造函数
{
Se_Name=str;
Se_TableName = Se_Name + "_"+DateTime.Now.Year.ToString()+"_"+DateTime.Now.Month.ToString ()+"_"+DateTime.Now.Day.ToString();
}
public void Se_Add(int ID,string NAME,string ITEM,int SUB_ID) //添加传感器
{
//
// TODO: 在此处添加构造函数逻辑
//
SqlConnection conn=new System.Data.SqlClient.SqlConnection ();
conn.ConnectionString = "workstation id=local;integrated security=SSPI;" + "persist security info=False;initial catalog=Marine_network";
conn.Open();
SqlCommand cmd = conn.CreateCommand();
Se_ID=ID;
Se_Name=NAME;
Se_Item=ITEM;
Se_Sub_ID= SUB_ID;
Se_TableName=Se_Name+"_"+DateTime.Now.Year.ToString ()+"_"+DateTime.Now.Month.ToString ()+"_"+DateTime.Now.Date.ToString();
try
{
//插入操作
cmd.CommandText = "INSERT INTO 传感器表(传感器ID,传感器名称,子系统ID,监测项目) VALUES(" + Se_ID+ ",'" +Se_Name + "'," +Se_Sub_ID +",'" + Se_Item + "')";
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message );
}
conn.Close();
}
//产生监测数据函数
public void Se_Start()
{
// Hook up the Elapsed event for the timer.
aTimer.Enabled = true;
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
// GC.KeepAlive(aTimer);
}
private void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e)
{
Random ra=new Random(); //产生随机数
switch (Se_Item)
{
case "温度":
Se_Value=Math.Round(ra.NextDouble()*4,3);
break;
case "水流速度":
Se_Value=ra.Next(1,80)*2;
break;
case "盐度":
Se_Value=Math.Round(ra.NextDouble()+34,3);
break;
case "PH值":
Se_Value=Math.Round(ra.NextDouble()*2+7,2);
break;
case "F离子含量":
Se_Value=Math.Round(ra.NextDouble()+0.5,2);
break;
case "Br离子含量":
Se_Value=Math.Round(ra.NextDouble()*20*50,2);
break;
case "Cl离子含量":
Se_Value=Math.Round(ra.NextDouble()*4+18,3);
break;
case "NO4离子含量":
Se_Value=Math.Round(ra.NextDouble()*7+28,2);
break;
case "SO4离子含量":
Se_Value=Math.Round(ra.NextDouble()*1200+2000,1);
break;
default:
Se_Value=ra.Next();
break;
}
Se_Time= DateTime.Now.Year.ToString () + "-" + DateTime.Now.Month.ToString () + "-" + DateTime.Now.Day.ToString () + " " + DateTime.Now.Hour.ToString() +":"+ DateTime.Now.Minute.ToString () + ":" + DateTime.Now.Second;
SqlConnection conn=new System.Data.SqlClient.SqlConnection ();
conn.ConnectionString = "workstation id=local;integrated security=SSPI;" + "persist security info=False;initial catalog=Marine_network";
conn.Open();
try
{
SqlCommand cmd = conn.CreateCommand();
//插入操作
cmd.CommandText = "INSERT INTO " + Se_TableName +" (Value,Time) VALUES("+ Se_Value +",'"+Se_Time+"' )";
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message );
}
conn.Close ();
}
public void Se_Stop() //停止产生监测数据函数
{
aTimer.Stop();
aTimer.Dispose();
}
~Sensor() //析构函数
{
aTimer.Enabled=false;
aTimer.Dispose();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -