Merhaba arkadaşlar,
bu yazımda sizlere Baykon marka bir teraziden veri nasıl okunur onu göstermeye çalışacağım.
bir winform açıyoruz ve 1 combobox , 1 textbox ve 1 tanede buton ekliyoruz.
tüm kaynak kodlarını sizlerle paylaşıyorum açıklamaları kodların arasına yapıyor olacağım hadi şimdi gelin kodları bir inceleyelim.
public partial class Form1 : Form
{
// burada bilgisayarınızdaki tüm açık portları getirmesini istedim ve bunuda bir string arrayine attım. bunu daha sonra bir combo boxta döneceğim.
string[] ports = System.IO.Ports.SerialPort.GetPortNames();
bool durum = false;
public Form1()
{
InitializeComponent();
Control.CheckForIllegalCrossThreadCalls = false;
}
private void Form1_Load(object sender, EventArgs e)
{
button3.BackColor = Color.Green;
// evet burada açık portları attığımız string arrayini dönerek comboboxa ekliyoruz.
foreach (string port in ports)
{
_cmbCOM.Items.Add(port);
}
}
private void button3_Click(object sender, EventArgs e)
{
if (durum==false)
{
try
{
// bağlantı için gerekli baudrate databits değerlerini giriyoruz.
serialPort1.BaudRate = 9600;
serialPort1.PortName = _cmbCOM.Text.ToString();
serialPort1.Parity = System.IO.Ports.Parity.None;
serialPort1.StopBits = System.IO.Ports.StopBits.One;
serialPort1.DataBits = 8;
}
catch (Exception ex)
{
_lblDurum.Text = “Bağlantı Hatası :” + ex.Message.ToString();
}
if (!serialPort1.IsOpen)
{
try
{
// portu açıyoruz ve bağlanıyoruz.
serialPort1.Open();
durum = true;
button3.BackColor = Color.Red;
button3.Text = “Bağlantıyı Kes”;
_lblDurum.Text = _cmbCOM.Text.ToString() + ” Portuna Bağlandı.”;
_Kilit(false);
}
catch (Exception ex)
{
_lblDurum.Text = “Bağlantı Hatası :” + ex.Message.ToString();
}
}
}
else
{
serialPort1.Close();
durum = false;
button3.BackColor = Color.Green;
button3.Text = “Bağlan”;
_lblDurum.Text = “Bağlantı Kesildi.”;
_Kilit(true);
}
}
public void _Kilit(bool durum)
{
_cmbCOM.Enabled = durum;
}
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
// evet baykon terazilerde butona basınca terazide yazan veriyi gönderiyor bize gelen veri önünde veya arkasında bazı ekstra veriler olulyor
// örnek : Total : 21.45 gibi sadece veriyi almak için önündeki total ve : gibi karakterleri temizlemeniz gerekli _Temizle() metotunuda o nedenle kullandım
string test = serialPort1.ReadExisting();
string yeni = _Temizle(test);
textBox1.Text = string.Empty;
Thread.Sleep(1000);
textBox1.Text = _Temizle(yeni);
}
}
evet bu kadardır umarım faydalı bir yazı olmuştur sormak istediğiniz soruları lütfen yorum bölümünden sorunuz
herkese iyi kodlamalı günler..