Bu site emekli olmuştur. Arşiv amaçlı olarak
BT AKADEMİ
sponsorluğunda yayın hayatına devam etmektedir.
Ana Sayfa
.net TV
Makaleler
Kaynak Kod
Haberler
Serbest Köşe
Canlı Köşe
Forum
C#nedir?
Ekibimiz
RSS
ADO.NET/SQL
C / Sys Prog.
Genel
Mono ve .NET
Silverlight
XML / Web Serv.
X86 Assembly
C++ / C++.NET
J#.NET / Java
.NET 3.x
UML / Analiz
Yazılım Müh.
ASP.NET
C# / VC#/.NET
Mobil Prog.
PHP 5
YAZAR HAKKINDA
Caner Şahan
http://www.csharpnedir.com/
İletişme geçmek için
tıklayın
.
24
Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için
tıklayın
.
Yayınlanan diğer makaleleri için
tıklayın
.
İlgili etiketler:
ayarlamamizi
bitinin
byte?lik
durumunu
framework
haberlesme
haberlesmede
haberlesmesi
makalemizde
porttan
portun
string
terminal
veriyi
windows
C# / VC#/.NET
Caner Şahan
YAZI HAKKINDA
Türü
:
Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi
:
Orta
Kategori
:
C# / VC#/.NET
Yayınlanma Tarihi
:
10.1.2005
Okunma Sayısı
:
74978
Yorum Sayısı
:
8
yorum yaz
SİTE İÇİ ARAMA
Üye
GİRİŞİ
Üye girişi için
tıklayın
.
Kullanıcı Adı
Şifre
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
Şifremi / Kullanıcı Adımı unuttum.
C#nedir? hesabınız yok mu?
Üye olabilmek için
tıklayın
.
Serbest KÖŞE
(?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
Bende Yazmak İstiyorum
Blogroll
Burak Selim Şenyurt
Bellek Yönetiminde Verimlilik için İpuçları (Rust Odaklı)
25.5.2025
Burak Selim Şenyurt
Rust ve Güvenli Bellek Yönetimi Hakkında
25.5.2025
Diğer Herşey
»
Makaleler RSS
»
Video Gönder
»
Makale Gönder
»
Serbest Köşeye Yazı Gönder
»
Yazar Başvurusu
»
C#nedir? Ekibinde Olmalıyım!
Sponsorlar
Ana Sayfa
/
Makaleler
/
C# / VC#/.NET
/
.NET Framework 2.0 ile Seri Port Haberleşmesi
.NET Framework 2.0 ile Seri Port Haberleşmesi
Favorilerime Ekle
Gönderiliyor lütfen bekleyin...
arkadaşıma gönder
Arkadaşınızın email adresi:
*
Mesajınız:
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:
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
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.
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.
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();
}
İ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.
Notlar:
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 Rate
lerin 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.
Bu bileşenin çalışabildiği platformlar:
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
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.
Kaynaklar
: MSDN Online, MSDN Magazine
Makale:
.NET Framework 2.0 ile Seri Port Haberleşmesi C#, Visual C# ve .NET Caner Şahan
Yazılan Yorumlar
Yorum Yaz
HAZ
15
2012
Abdulkadir Yavuzkan
/
üye hakkında
Caner Bey ben şu an visual stdio 2010 kullanıyorum seri haberleşme ile ve modbus tcp ile PLC ile haberleşme yapmak istiyorum. Bu konuda bir makaleniz veya çalışmanız var mı bu konuda yardımcı olabilir misiniz?
OCA
4
2012
ferdi gürtekin
/
üye hakkında
hocam gelen veri oldugunda otomatik textbox vb. bir yere nasıl atayabiliriz?
OCA
4
2012
ferdi gürtekin
/
üye hakkında
hocam gelen veri oldugunda otomatik textbox vb. bir yere nasıl atayabiliriz?
OCA
4
2012
ferdi gürtekin
/
üye hakkında
hocam gelen veri oldugunda otomatik textbox vb. bir yere nasıl atayabiliriz?
TEM
24
2006
asdasd asd
/
üye hakkında
access to port com1 denied diyor nerde hata yapıyorum acaba aynı kodu yazdım
TEM
24
2006
asdasd asd
/
üye hakkında
acces to com port denied gibi hata veriyo
Sayfalar :
1
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için
tıklayın
.
Üye değilseniz
Üyel Ol
linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
Bu Konuda Son 10
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
Dizayn ve Kodlama
bt
akademi
. Tüm Hakları Saklıdır © Copyright 2002-2009 c#nedir?com
Makaleler
Serbest Köşe
Makale Gönder
.Net TV
Video Gönder
Canlı Köşe
Kaynak Kod
Forum
Haberler
Röportajlar
Anketler
C# Nedir?
İletişim
Site Haritası
RSS
Favorilere Ekle
Üyelik
Hesap Aktivasyon
Ekibimiz
Ekibe Katıl