-
C# 윈폼차트 <= 라즈베리파이(MySql서버) <=DHT11온습도 센서C# 2020. 9. 18. 14:36
전체 소스코드
using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace dht_Sensor { public partial class Form1 : Form { private static string Tname = "tblSensorDHT11"; private static string QueryLogin = "SERVER=192.168.0.155 ; DATABASE = mydb; UID = root ; PASSWORD = 1234;"; private static string QueryTable = "SELECT * FROM " + Tname + " ORDER BY TIME DESC LIMIT "; private static string QueryTable12 = QueryTable + 300 ; private static string QueryTable2 = QueryTable + 1 ; private bool TimerStatus; public void RefreshOn() { TimerStatus = true; timer1.Start(); button2.Text = "그래프 정지"; } public void RefreshOff() { TimerStatus = false; timer1.Stop(); button2.Text = "시작"; } public void RefreshToggle() { if(false==TimerStatus)//타이머 꺼져있을 때 { RefreshOn(); } else { RefreshOff(); } } public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { RefreshOn(); DataSet aDataSet = new DataSet(); using(MySqlConnection amySqlConnection = new MySqlConnection(QueryLogin)) { MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter(QueryTable12,amySqlConnection); mySqlDataAdapter.Fill(aDataSet,Tname); List<int> TempData = new List<int>(); List<int> HumiData = new List<int>(); List<string> Time = new List<string>(); foreach (DataRow item in aDataSet.Tables[Tname].Rows) { TempData.Add(int.Parse(item["TEMP"].ToString())); HumiData.Add(int.Parse(item["HUMI"].ToString())); Time.Add(item["TIME"].ToString().Substring(8, 4).Insert(2,":")); } //MessageBox.Show(TempData.Count.ToString()); //MessageBox.Show(HumiData.Count.ToString()); TempData.Reverse(); HumiData.Reverse(); Time.Reverse(); chart1.Series[0].Points.DataBindXY(Time, TempData); chart1.ChartAreas[0].AxisX.Minimum = 0; chart1.ChartAreas[0].AxisY.Maximum = 100; chart1.Series[0].LegendText = "온도 ºC"; chart1.Series[1].Points.DataBindXY(Time,HumiData); chart1.Series[1].LegendText = "습도 %"; } } private void button1_Click(object sender, EventArgs e) { UpdateChart(); } private void timer1_Tick(object sender, EventArgs e) { UpdateChart(); } private void UpdateChart() { DataSet aDataSet = new DataSet(); using (MySqlConnection amySqlConnection = new MySqlConnection(QueryLogin)) { MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter(QueryTable2, amySqlConnection); mySqlDataAdapter.Fill(aDataSet, Tname); } DataRow Temp = aDataSet.Tables[Tname].Rows[0]; chart1.Series[0].Points.AddXY(Temp["TIME"].ToString().Substring(8, 4).Insert(2, ":"), int.Parse(Temp["TEMP"].ToString())); chart1.Series[1].Points.AddXY(Temp["TIME"].ToString().Substring(8, 4).Insert(2, ":"), int.Parse(Temp["HUMI"].ToString())); if (chart1.Series[0].Points.Count > 300) { chart1.Series[0].Points.RemoveAt(0); chart1.Series[1].Points.RemoveAt(0); } } private void button2_Click(object sender, EventArgs e) { RefreshToggle(); } } }
'C#' 카테고리의 다른 글
C# 윈폼 Final Project 탭컨트롤 다루기 (3) 2020.09.18 C# 윈폼 책정보 MySql 커넥션 (0) 2020.09.18 C# LINQ XML 추출 (0) 2020.09.18 c# 윈폼 패킷 아날라이저 (0) 2020.09.18 내가 쓰려고 만든 C# 윈폼 템플릿(Check박스를 이용한 Delete) (0) 2020.09.15