30 03 2017
VTIY C# ile Sensör Verilerini Toplama
Yukarıdaki ara yüz ile 3 ayri sensörden C# programı ile veri toplanmıştır.
Tasarlanan Form aşağıda verilmiştir.
Programa ait kodlar da aşağıda verilmiştir.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Windows.Forms.DataVisualization.Charting;
namespace VeriToplama2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// Bu kısımda form ekrana yüklenirken tüm combobox unsurlarının içerikleri dolduruluyor.
cmbSeriPort.Items.Add(“COM3”);
cmbSeriPort.Items.Add(“COM4”);
cmbSeriPort.Items.Add(“COM5”);
cmbSeriPort.SelectedIndex = 0;
cmbSeriHiz.Items.Add(“9600”);
cmbSeriHiz.Items.Add(“115200”);
cmbSeriHiz.SelectedIndex = 0;
cmbVerisayisi.Items.Add(“3”);
cmbVerisayisi.Items.Add(“25”);
cmbVerisayisi.Items.Add(“50”);
cmbVerisayisi.Items.Add(“100”);
cmbVerisayisi.Items.Add(“200”);
cmbVerisayisi.Items.Add(“300”);
cmbVerisayisi.SelectedIndex = 0;
//Grafik unsurunda 3 ayrı grafik çizdireceğiz. Bunlar pot, ldr, lm35
// bu grafiklerin tipleri “fastline” ve renkleri burada ayarlanıyor.
chart1.Series[“POT”].ChartType = SeriesChartType.FastLine;
chart1.Series[“POT”].Color = Color.Red;
chart1.Series[“LDR”].ChartType = SeriesChartType.FastLine;
chart1.Series[“LDR”].Color = Color.Blue;
chart1.Series[“LM35”].ChartType = SeriesChartType.FastLine;
chart1.Series[“LM35”].Color = Color.Brown;
}
private void btnOku_Click(object sender, EventArgs e)
{
//seri port kapalı ise aç diyoruz.
//ancak hata alırsak programın kırılmaması için try-catch kullandık.
if (!serialPort1.IsOpen)
{
try
{
serialPort1.Open();
}
catch
{
MessageBox.Show(“Seri port hatası var!”);
return;
}
}
//okunan değerlerin saklanacağı diziler tanımlanıyor.
double[] pot = new double[int.Parse(cmbVerisayisi.SelectedItem.ToString())];
double[] ldr = new double[int.Parse(cmbVerisayisi.SelectedItem.ToString())];
double[] lm35 = new double[int.Parse(cmbVerisayisi.SelectedItem.ToString())];
//her çalıştırma işleminde grafik unsurlarının temizlenmesi sağlanıyor.
chart1.Series[“POT”].Points.Clear();
chart1.Series[“LDR”].Points.Clear();
chart1.Series[“LM35”].Points.Clear();
//listbox unsurları temizleniyor.
listBox1.Items.Clear();
listBox2.Items.Clear();
listBox3.Items.Clear();
listBox4.Items.Clear();
int i= 0;
int j = 0;
int l = 0;
// döngüyü veri sayısı combobox’ından alınan değer kadar ayarlıyoruz.
while (i < int.Parse(cmbVerisayisi.SelectedItem.ToString()))
{
string s = serialPort1.ReadLine();
listBox1.Items.Insert(0,s);
string[] k = s.Split(‘_’);
if (k[0] == “POT”)
{
listBox2.Items.Insert(0,k[1]);
pot[i] = int.Parse(k[1]);
if (pot[i] > 900) // pot’tan okunan değer 900’den büyükse led yakmak için dışarıya seri porttan veri
{
serialPort1.WriteLine(“1”);
}
else
{
serialPort1.WriteLine(“0”);
}
//döngü içinde grafik çizdiriliyor.
chart1.Series[“POT”].Points.AddXY(i, pot[i]);
i = i + 1;
}
else if (k[0] == “LDR”)
{
listBox3.Items.Insert(0, k[1]);
ldr[j] = int.Parse(k[1]);
chart1.Series[“LDR”].Points.AddXY(j, ldr[j]);
j = j + 1;
}
else if (k[0] == “SCK”)
{
listBox4.Items.Insert(0, k[1]);
lm35[l] = int.Parse(k[1]);
chart1.Series[“LM35”].Points.AddXY(l, lm35[l]);
l = l + 1;
}
else
{
//eğer hiçbir şarta uymayan bir veri gelirse devam et…
continue;
}
}
}
private void btnDur_Click(object sender, EventArgs e)
{
// seri port açık ise kapat!
if (serialPort1.IsOpen)
serialPort1.Close();
}
private void cmbSeriPort_SelectedIndexChanged(object sender, EventArgs e)
{
//seri portu seçilen değeri ata.
serialPort1.PortName = cmbSeriPort.Text;
}
}
}
Matlab ile GUI oluşturarak Kontrol Kartından Veri Okuma İşlemi Görüntü İşleme Ders-7 Notları