반응형
서동우(교육), [16.09.20 18:22]
# -*- coding:utf-8 -*-
import mysql.connector;
import Adafruit_DHT as Sensor
from datetime import datetime
import time
Maria = mysql.connector.connect(host="localhost", user="root", passwd="너의암호", database="mydb");
Cursor = Maria.cursor();
while True :
Humi, Temp = Sensor.read_retry(Sensor.DHT11, 4)
d = datetime.today().strftime('%Y-%m-%d %H:%M:%S')
Query = "INSERT INTO tblSensorDHT11 VALUES(%s,%s,%s)";
Values = [
(d,Humi,Temp)
];
print(d,Humi,Temp)
Cursor.executemany(Query,Values);
Maria.commit();
이번에는 온습도 센서를 통해 온도 ,습도 데이터를 DB Table에 저장한 정보를 C#을 통해 그래프로 불러와 보겠다.
VI 005_TEST_DHT111.PY 파일을 만들어 파일에 코딩을 해준다.
다시 파일을 PYTHON으로 실행해주면 위와 같이 습도와 온도가 출력된다
using System;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
private static string TName = "tblSensor_DHT11";
private static string QueryLogin = "SERVER=192.168.0.164; DATABASE=mydb; UID=root; PASSWORD=1234";
private static string QueryTable = "SELECT * FROM " + TName + " ORDER BY TIME DESC LIMIT " ;
private string QueryTable5 = QueryTable + 20;
private string QueryTable1 = QueryTable + 1;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
DataSet data = new DataSet();
using (MySqlConnection connection = new MySqlConnection(QueryLogin))
{
MySqlDataAdapter dataAdapter = new MySqlDataAdapter(QueryTable5, connection);
dataAdapter.Fill(data, TName);
}
List<int> TempData = new List<int>();
List<int> HumiData = new List<int>();
foreach (DataRow item in data.Tables[TName].Rows)
{
TempData.Add(Int32.Parse(item["TEMP"].ToString()));
TempData.Add(Int32.Parse(item["HUMI"].ToString()));
}
//MessageBox.Show(TempData.Count.ToString());
chart1.Series[0].Points.DataBindY(TempData);
chart1.Series[1].Points.DataBindY(HumiData);
}
private void button2_Click(object sender, EventArgs e)
{
DataSet data = new DataSet();
using (MySqlConnection connection = new MySqlConnection(QueryLogin))
{
MySqlDataAdapter dataAdapter = new MySqlDataAdapter(QueryTable1, connection);
dataAdapter.Fill(data, TName);
}
DataRow temp = data.Tables[TName].Rows[0];
chart1.Series[0].Points.Add(Int32.Parse(temp["TEMP"].ToString()));
chart1.Series[1].Points.Add(Int32.Parse(temp["HUMI"].ToString()));
if (chart1.Series[0].Points.Count>5)
{
chart1.Series[0].Points.RemoveAt(0);
chart1.Series[1].Points.RemoveAt(0);
}
}
}
}
C#에서 using 문을 사용하여 DB와 연결해 준다 .
연결해주면
그래프를 통해 온도 습도 변화가 시각적으로 확인 가능하다.
아래는 강사님 코드
using System;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace WindowsFormsApp28
{
public partial class Form1 : Form
{
private static string TName = "tblSensorDHT11";
private static string QueryLogin = "SERVER=192.168.0.172; DATABASE=mydb; UID=root; PASSWORD=####;";
private static string QueryTable = "SELECT * FROM " + TName + " ORDER BY TIME DESC LIMIT ";
private static string QueryTable12 = QueryTable + 12;
private static string QueryTable1 = QueryTable + 1;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
DataSet aDataSet = new DataSet();
using (MySqlConnection aMySqlConnection = new MySqlConnection(QueryLogin))
{
MySqlDataAdapter aMySqlDataAdapter = new MySqlDataAdapter(QueryTable12, aMySqlConnection);
aMySqlDataAdapter.Fill(aDataSet, TName);
}
List<int> TempData = new List<int>();
List<int> HumiData = new List<int>();
foreach (DataRow Temp in aDataSet.Tables[TName].Rows)
{
TempData.Add(Int32.Parse(Temp["TEMP"].ToString()));
HumiData.Add(Int32.Parse(Temp["HUMI"].ToString()));
}
//MessageBox.Show(TempData.Count.ToString());
chart1.Series[0].Points.DataBindY(TempData);
chart1.Series[1].Points.DataBindY(HumiData);
}
private void button1_Click(object sender, EventArgs e)
{
DataSet aDataSet = new DataSet();
using (MySqlConnection aMySqlConnection = new MySqlConnection(QueryLogin))
{
MySqlDataAdapter aMySqlDataAdapter = new MySqlDataAdapter(QueryTable1, aMySqlConnection);
aMySqlDataAdapter.Fill(aDataSet, TName);
}
DataRow Temp = aDataSet.Tables[TName].Rows[0];
chart1.Series[0].Points.Add(Int32.Parse(Temp["TEMP"].ToString()));
chart1.Series[1].Points.Add(Int32.Parse(Temp["HUMI"].ToString()));
if(chart1.Series[0].Points.Count > 12)
{
chart1.Series[0].Points.RemoveAt(0);
chart1.Series[1].Points.RemoveAt(0);
}
}
}
}
반응형
'C#' 카테고리의 다른 글
C# -Thread 동기화 ! (lock 키워드/Monitor 클래스 사용) (1) | 2023.06.15 |
---|---|
C# 기초 문법 진법 boolen형, 형변환, .ReadLine() , .Parse ,연산자 (0) | 2023.06.13 |
C# 개발 - Devexpress Gridcontrol 사용하여 데이터 출력하기 (0) | 2023.06.12 |
C# WinForm - PDA 프로그램 개발 (비주얼 스튜디오 2008 코드 포함) (2) | 2023.05.17 |
C# - Visual Studio 2008 PDA 개발 하는 방법 (0) | 2023.05.08 |
C# 문법 데이터 형변환과 프로퍼티에 대하여... (0) | 2023.03.27 |