Makale Özeti

Bu makalede C# ile serial port işlemlerinin nasıl yapıldığını inceleyeceğiz.

Makale

Serial Port Bileşeni   

    Whidbey le birlikte artık Serial Port bileşenimiz de var. Artık  API lerle uğraşmayacağız. Seri port classı System.IO nun altında geliyor. Portlar mikroişlemciyi dış dünyaya bağlarlar, arka planda işler burada anlatılan gibi veriyi gönderip almak deyimleri yetmeyecek kadar karışık ama biz elimizdeki komponent sayesinde bunu bu şekilde anlatırsak da yanlış olmaz, elektronikçi arkadaşlar umarım kızmaz, napalım bu kadar basit yapmışlar.
    Seri ve paralel portla elektronik cihazlara veri gönderilebilir, veri okunabilir. Eskiden seri portla haberleşmek için VB de API leri kullanırdık, Framework 1.0 ile de gelmeyen seri port komponentimiz Whidbey ile birlikte artık var. Seri iletişim sayesinde birçok profesyonel elektronik cihazda bulunan remote portuna bağlanıp bunlara yönelik uygulama geliştirebiliriz.. Hatta cep telefonlarının komut setlerini ulaşıp, cep telefonlarıyla ilgili uygulamalar ( mobil uygulamaları kastetmiyorum, hafıza bilgilerine erişim,SIM karta erişim gibi uygulamalar ) yapabilirsiniz. Tabi dikkatli olunması gerekli, portları yakma tehlikesi veya bağlanılan cihaza.zarar verme tehlikesi var.

    Şimdi işimize başlayalım, elimize bir tane DB9 dişi konnektör alıyoruz ve  2 ve 3 nolu pinleri birbirine bağlıyoruz. Aşağıdaki şekle dikkat ederseniz, 2 nolu pin gelen bilgiyi, 3 nolu pinde gönderilen bilgileri işliyor. Böylece verileri kendimize yollayabilir ve alabiliriz.

Classımız System.IO nun altında bulunuyor.

Formumuza Toolbox->Components tabından SerialPort bileşeni ekliyoruz.

Yapacağımız işlemler;
-Programımız açılırken bilgisayardaki Com portları alacağız, bunu GetPortNames() metoduyla yapıyoruz.
-Write() ile portumuza verileri göndereceğiz, DataReceived olayı sayesinde portumuza veri geldiğinde ReadExisting() ile okuyacağız.

private void Form1_Load(object sender, EventArgs e)

{
   //Eğer port açıksa bunu kapatıyoruz...
  
if (sPort.IsOpen)
   {
        sPort.Close();
   }
   //Bilgisayardaki portları yüklüyoruz...
 
foreach (string ComPorts in SerialPort.GetPortNames())
     portBox.Items.Add(ComPorts);
}

private void button1_Click(object sender, EventArgs e)

{

    //Eğer port açıksa bunu kapatıyoruz..
  
if (sPort.IsOpen)
   {
         sPort.Close();
   }
   //Hangi portu kullanacağımız belirliyoruz
  
sPort.PortName = portBox.SelectedItem.ToString();
   sPort.Open();
   //Write metoduyla verileri yolluyoruz
  
sPort.Write("12345678");
   //Gönderdiğimiz veriler "DataReceived" olayında "gelen" değişkenine
   //atanıyor ve biz de bunu okuyoruz...
  
txtReceived.Text = gelen;
}
Komponentimizin DataReceived olayına properties ten seçiyoruz ve gelen verileri bu olay sayesinde okuyoruz.

private void sPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
   //ReadExisting() metodu porttaki tüm verileri string olarak döndürür...
  gelen = sPort.ReadExisting();
}


 


Umarım sizler için açıklayıcı ve faydalı bir makale olmuştur. Bu makale ile ilgili sorularını için bana ulaşabileceğiniz mail adresim maydo74@hotmail.com dur.Ornek Kodlar