⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sensor.cs

📁 海底光测网模拟数据传输
💻 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 + -