|  | 
        
            | 
                    
                        | .NET Framework 2.0 ile Seri Port Haberleşmesi |  |  
                        | 
	
    
		
            | Gönderiliyor lütfen bekleyin... | 
 |  | 
        
            | Bu makalemizde Framework 
  2,0(Beta) kullanarak seriport; namı diğer RS232 ile haberleşmesinin nasıl yapılabileceğini 
  inceleyeceğiz. Aslında 2.0dan önceki Framework sürümlerinde portlarla haberleşme 
  ile ilgili bir sınıf yoktu. Bu yüzden seri port haberleşmesi Windows API leri 
  kullanılarak yapılıyordu. Bu eksiklik .NET 2.0 ile giderilmiş görülüyor. Framework 
  2.0 bizlere System.IO.Ports isimli yeni bir sınıf sağlamakta. Bu makalemizde 
  el sıkışma(handshaking) veya akış kontrolü(flow control) gibi seri haberleşme 
  kavramlarına değinmeyeceğiz. Amacımız .NET 2.0 ile gelen System.IO.Ports 
  sınıfını incelemek olduğu için seri port haberleşmesi konusunda deneyimli olduğunuzu 
  varsayıyorum. Öte yandan detaylı port işlemleri için hand shaking,flow control 
  gibi kavramları ayrıntılı olarak araştırmanızı öneririm. 
 RS232yi 
  Tanıyalım:
 
 
  
 
 
	Seri portlar, bilgisayarımız üzerinde hem veri 
  yollayıp hemde veriyi aynı anda alarak çalışmaktadır. Bu tarz çalışma şekline 
  terminolojide full-duplex denmektedir. Kullanacağımız seri portlar da full-duplex 
  çalışmaktadır. Seri port haberleşmede 1 bytelık veriyi transfer ederken, tek 
  kablo üzerinden bitlerini belirli zaman aralıklarıyla tek tek yollamaktadır. 
  1 bytelık veriyi bit bit yollarken elbetteki belirli bir sıra ve düzene göre 
  yollamaktadır. Çalışmasını internette kullanılan TCP/IPye kısmen benzetebiliriz. 
  TCP/IPde gönderilecek olan pakete hedef ve kaynak ip adresleri eklenerek haberleşme 
  sağlanır. Seri haberleşmede iplerin yerini start ve stop bitleri denilen terimler 
  almaktadır. Yani veri önce start bit,sonra veri ve son olarakta stop bit şeklinde 
  yollanır. RS232, haberleşmede çok önemli bir kavramdır. Çok fazla detaya inmemiz 
  makale sınırlarımızı aşacağı için sadece temel haberleşmedeki kavramlar ele 
  almakla yetindim.
		| Pin | Sinyal Anlamı | Pin | Sinyal Anlamı |  
		| 1 | taşıyıcı data sezme | 6 | veri set etme |  
		| 2 | alınan data(okunanlar) | 7 | gönderme için istek |  
		| 3 | yollanan 
		datalar(yazılanlar) | 8 | silme için istek |  
		| 4 | veri terminal 
		hazırlama | 9 | modemden gelen sinyaller |  
		| 5 | toprak |  |  |  
 System.IO.Ports sınıfından kendimiz nesne 
  yaratarak kullanabileceğimiz gibi Whidbey ile sürükle-bırak yöntem ile de bu 
  nesneyi kolayca oluşturabiliriz.
 
 SerialPort serialPort1=new SerialPort( );
 
 yada
 
 
  
 şeklinde ekleme yapabiliriz.
 
 Serialportun bileşeninin özelliklerini Properties 
  penceresinden kolayca ayarlayabiliriz. Bu özellikler aşadaki şekilde gözükmektedir.
 
 
  
 Özelliklerde dikkatimizi çeken ReadBufferSize 
  özelliğidir. Bu özellik porttan okunan değerin bekletildiği yerdir. Bu değer 
  default olarak 4096dır ama isteğe bağlı olarak (uygulamanın durumuna bağlı 
  olarak) değiştirilebilir. SerialPort sınıfından yarattığımız nesnede en fazla 
  kullanılan metotlar ise WriteLine() ve ReadLine() metotlarıdır. Adlarındanda 
  anlaşılacağı gibi biri yazma diğeri ise okuma işlemini yapmaktadır. Bunun yanı 
  sıra portları açan ve kapayan Open(), Close() gibi metotları da bulunmaktadır. 
  Open() ve Close() metotlarından bahsetmişken şunu belirtmekte fayda var. Eğer 
  bir port açıksa ve siz bu portu tekrar açma isteğinde bulunursanız hata ile 
  karşılaşırsınız. Aynı şekilde kapalı bir porttan da veri okumaya kalkışırsanız 
  gene bir hata mesajı alırsınız. Bu gibi durumları önlemek için IsOpen() methodu 
  kullanılmaktadır. Bu metot ile portun açık olup olmadığı belirlenir ve bu metot 
  bool türünden bir değer döner.
 
 Porttaki haberleşmeyi görmek için  basit 
  bir mesajlaşma sistemi geliştirelim. Bu sistemde DB 9 denilen female-female 
  kabloları iki bilgisayara bağlayınız. Eğer iki bilgisayara sahip değilseniz, 
  küçük bir tel ile 2. ve 3. pinleri kısa devre yapın. Böylelikle gönderdiğiniz 
  veriyi tekrardan geri almış olacaksınız. Aşadaki formda yaz ve oku butonlarının 
  olaylarına bakalım.
 
 
 
	İlk önce göndereceğimiz veriyi yazıyoruz ve yaz 
  buttonuna basıyoruz. Bu noktada; bu string byte dizine çevriliyor ve çevrim 
  ASCII kodlama ile yapılıyor. Bu yüzden  karşı tarafta türkçe karekterlerin 
  yerine ? çıkıyor.
		| private void yaz_click(object sender, 
		EventArgs e) {
 if (!serialPort1.IsOpen)
 {
 serialPort1.Open();
 }
 string sendmesaj = textBox1.Text+"-->>>>";
 serialPort1.WriteLine(sendmesaj);
 }
 
 private void oku_click(object sender, EventArgs e)
 {
 
 string i=serialPort1.ReadLine();
 textBox2.Text ="<<<<---"+i;
 serialPort1.Close();
 
 }
 |  
 
  
 Notlar:
 
 
 
	Bu bileşenin çalışabildiği platformlar:Eğer iki bilgisayarı bağlayarak deneme 
	yapıyorsanız;Her iki bilgisayarın aynı porta takılı olduğundan emin olun,
 Her iki bilgisayar içinde Bound Ratelerin aynı 
    olduğundan emin olun. Bu hız senkronizasyonu sağlayacaktır.
Her iki sistemde de .NET Framework 2.0(beta) 
    ve programın yüklü olup olmadığını kontrol edin.Tek bilgisayarda çalışıyorsanız 2 ile 3 
	pinlerini kısa devre yaptığınızdan emin olun. 
 Windows 
  Millennium Edition, Windows 2000, Windows 2000 Server, Windows 2000 Advanced 
  Server, Windows XP Home Edition, Windows XP Professional, Windows Server 2003, 
  .NET Compact Framework.
 
 Serialportun 
  Diğer Özellikleri
 
 
 
	Kaynaklar : MSDN Online, 
  MSDN Magazine
		| Genel Özellikler | Özellik 
		İsmi: | Tanımı |  
		|  | BaseStream | Alt akım(Stream) nesnesini Serialport 
		için döndürür. |  
		|  | BaudRate | Seri portun BaudRateini geri dönder 
		veya ayarlamamızı sağlar. |  
		|  | BreakState | Durdurma sinyalinin durumunu almaya 
		veya ayarlamaya yarar. |  
		|  | BytesToRead | Alınan buffer bölgesindeki verinin 
		boyutu geri döner.(Sadece okunabilir) |  
		|  | BytesToWrite | Yazılan buffer bölgesindeki verinin 
		boyutunu döner.(Sadece okunabilir) |  
		|  | CDHolding | Taşıyıcı data sezme bitinin durumunu 
		döner.(Sadece okunabilir) |  
		|  | CtsHolding | Silme için istek bitinin durumunu 
		döner.(Sadece okunabilir) |  
		|  | DataBits | Bir bytetaki standart boyutunu 
		ayarlamaya veya büyüklüğünü almaya yarar. |  
		|  | DsrHolding | Veri set etme bitinin durumunu döner. |  
		|  | DtrEnable | Veri Terminal hazırlamanın durumunu 
		belirtiriz. |  
		|  | Encoding | Veri transferi başlamadan önceki 
		encoding şeklinin seçilmesini sağlar veya ayarlamamızı sağlar. |  
		|  | Handshake | Seri porttaki handshaking protokolünü 
		ayarlamamızı sağlar. |  
		|  | IsOpen | Seri portun açık olup olmadığını geri 
		döner.(Sadece okunabilir) |  
		|  | Parity | Parity kontrol protoklunun ayarlamak 
		için kullanılır. |  
		|  | PortName | Port ismini belirtmemizi sağlar. |  
		|  | ReadBufferSize | Seri porttan okunan verilerin 
		bufferdaki ne kadar yer kaplayacağını belirleriz. |  
		|  | WriteBufferSize | Seri porta yazılan verilerin 
		bufferdaki ne kadar yer kaplayacağını belirleriz. |  
		|  |  |  |  
 
 
                Makale:.NET Framework 2.0 ile Seri Port Haberleşmesi C#, Visual C# ve .NET Caner Şahan
 | 
        
            |  | 
        
            |  | 
        
            | 
                    
                        
                            
                        
                            Eklenen Son 10 
                            Bu Konuda Geçmiş 10 
                        
                            Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
                         
                            Son Eklenen 10 Makale Yükleniyor
                         
                            Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
                         | 
        
            |  |