ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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();
            }
        }
    }
    
Designed by Tistory.