C# ile Port Dinleme

C# serial port nesnesi ile usb ile bilgisayarımıza bağladığımız ve veri aktarımı sağlayan cihazlarla iletişim kurabiliriz.
Arduino projelerinde sıkça kullanılan seri port iletişimi farklı projelerde de kullanılabilir.
Elimizde seri port üzerinden bilgisayara veri gönderen bir cihazın olduğunu varsayarak seri iletişim örneği yapalım.

Windows form ekranına bir tane combobox ekleyerek ilk olarak bilgisayara bağlı olan COM portları listeleyim.

Form load kısmına

comboBox1.DataSource = SerialPort.GetPortNames();

yazarak kullanılabilir portları listeleyebiliriz.

Formumuza öncelikle bir tane serialport nesnesi ekliyoruz ve birde “port aç” butonu ekleyerek click eventine aşağıdaki kodları ekleyerek seçtiğimiz portu açabiliriz.

serialPort1.PortName = comboBox1.SelectedItem.ToString(); ;
 
serialPort1.Open();

En basit haliyle yukarıdaki kodları kullanarak herhangi bir seri porta bağlanabiliriz.
Veri aktarımı sırasında sizlere lazım olacak baudrate gibi ayarlamaları kendi projenize göre ayarlayabilirsiniz.
Serial port nesnesinin eventlarını incelediğimiz zaman data received olayını görebilirsiniz.
Bu olay portu açtığınız andan itibaren port üzerinden bilgisayara veri gönderimi yapıldığında tetiklenir.
Yani seri iletişimde bize veri okumamızı sağlayacak olay bu olacaktır.

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string gelen =serialPort1.ReadLine();
listBox1.Items.Add(gelen);
serialPort1.Close();
}

yukarıdaki kodlarla seri port üzerinden gelen veriler satır satır okunarak gelen değişkenine ve daha sonra listbox’a eklenmekte.
veri aktarımı bittiğinde de seri port kapanmakta.

Seri port üzerinden veri okumanın birden fazla yöntemi var.

ReadByte ile seri port üzerinden bir byte veri okumamızı sağlar.Geri dönüş değeri int türüdür.
ReadExisting ile seri port üzerinden okunabilen tüm verileri string olarak geri döndürür.
ReadLine ile seri port üzerinden yeni satır karakteri gelene kadar bekler ve gelen veriyi string olarak geri döndürür.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir