You are currently viewing Visual Studio C# İle Serial Haberleşme Programı

Visual Studio C# İle Serial Haberleşme Programı

Bu yazıda C# ve Visual Studio kullanarak Windows Form Application kullanarak bir serial haberleşme programı geliştireceğiz.

Text box ekledikten sonra özelliklerden ReadOnly yaptık, ardından daha iyi okunabilmesi için font’u Bold yaptık ve text align’ı center yaptık
Ardından port özelliklerini seçeceğimiz alan için bir groupBox alanı oluşturuyoruz. Bu tool’u toolbox’tan doğrudan ekleyebilirsiniz.
Seçimlerin neler olduğunu göstermek için label ekliyoruz.
Seçimler yapabilmek için ComboBox ekliyoruz.
Bağlanma ve bağlantıyı koparmak için buton ekliyoruz.
Seçilebilecek Baud Rate hızlarını ayarlamak için değerleri yazıyoruz. (Baud Rate karşısındaki comboBox üzerinde bulunan üçgene tıklayıp edit items diyouz, ardından baud rate hızlarını yeni satırlarda ekliyoruz.)
ComboBox’ların Name’lerini Properties penceresinden kullanımı daha kolay ve anlamlı olacak şekilde değiştiriyoruz.
COMPort_cmbBox
BaudRate_cmbBox
DataBits_cmbBox
Parity_cmbBox
Bağlantıyı gerçekleştirmek için kullanacağımız fonksiyonu oluşturmak için Connect butonu üzerine iki kere tıklanır. Visual Studio bizim için fonksiyonu otomatik olarak oluşturur.
Button1_Click fonksiyonu butona tıklandığında çalışacak eylemlerin gerçekleşeceği fonksiyondur. Bu yüzden yapacağımız işlemleri bu fonksiyon içerisine yazacağız.
Öncelikle portname’i, yani comport’u seçmemiz lazım bunu da COMPort_cmbBox içinde seçilen bağlantı noktasını alarak yapacağız.
COMPort_cmbBox.Text komutu ile comboBox içinde yazılı olan yazıyı almamızı olanak sağlar. serialPort1.PortName ise serial portumuzun adının yazılı olan adrese eşitlenmesini sağlar.
Bağlantı durumunu görselleştirmek için Progress Bar ekliyoruz.
Serial port’a bağlanmak için ve progress barın çalışması için yazmamız gereken kodlar.
Parity ve stop bits değişkenleri benim uygulamamda none ve one olacağı için kod içerisinden seçtim, ancak uygulamaya göre farklı ihtiyaçlar olabilir. Bunları kod içinden yapabileceğiniz gibi comboBox içindeki metni alarak da seçmeniz mümkün.
Kodların en üst kısmında bulunan InitializeComponent() kısmı form yaratıldığında ilk çalışan kısımdır. Bunun altına yazacağınız kodlar form yaratıldığında çalıştırılacak ve işlemleri yapacaktır. Bizde program açıldığında bilgisayara bağlı olan serialPort cihazlarını bulmak istiyoruz. Bu yüzden findConnectedPorts() adında bir fonksiyon oluşturup işlemlerimizi bu fonksiyon içinde yapacağız.
Bilgisayara bağlı olan portları SerialPort.GetPortNames() fonksiyonu ile alıyoruz ve foreach yapısıyla combobox’ımızın içine atıyoruz. Bu sayede program çalışmaya başladığında bilgisayara bağlı olan portları bu şekilde rahatlıkla görebileceğiz.
Bağlantıyı sonlandırmak için disconnect butonu üzerine çift tıklayıp çalışacak fonksiyon içerisine serialport’u kapatacak kodu yazıyoruz. Aynı zamanda progress barın da sıfıra gelmesini istiyoruz.
Serial port üzerinden gelen verileri okumak için bir trigger yapısına ihtiyacımız var. Kullanacağımız yapı DataReceived yapısı. Bu yapı Visual Studio içinde tanımlanmış isterseniz kendi fonksiyonunuzu yazıp buraya tanımlayabilirsiniz, isterseniz de Properties bölümünden DataReceived yapısı üzerine çift tıklayarak Visual Studio’nun otomatik yaratmasını sağlayabilirsiniz.
Çift tıklayınca yapı bu şekilde oluşturuluyor. Serial port üzerinden gelen her veride öncelikle bu yapı tetikleniyor ve okuma işlemlerini burada yapacağız.
Okumak için string tipinde bir değişken oluşturup ReadExisting() metodu ile gelen tüm veriyi okuyoruz. Eğer dataReceived fonksiyonu içerisinde textBox kontrol etmeye çalışırsanız çapraz iş hatası alacaksınızdır ve program çökecektir, bu yüzden Invoke methodunu kullanmamız gerekiyor.

Fonksiyon içerisinde okunan text’i alıyoruz ve textBox’ımız içine yazıyoruz. Aynı zamanda yeni gelen veriler ile karışıklık olmaması için textBox’ı işlemin hemen başında temizliyoruz, yeni verileri yazıyoruz. Şimdi programı açıp kodun çalışıp çalışmadığını test edebiliriz.

Görüldüğü üzere veriyi sıkıntısız bir şekilde alabiliyoruz. (Yazdığınız programı başlatmak için Visual Studio’da yukarıda bulunan start butonuna basabilir ya da klavyeden f5 tuşuna basıp programı çalıştırabilirsiniz.)
Verileri göndermek istediğimizde kullanacağımız butonu oluşturuyoruz. Çift tıklayıp fonksiyonunu oluşturuyoruz.
serialPort1.WriteLine() yapısı içinde gönderdiğiniz verinin sonuna yeni bir \n (New Line) koyarak gönderir. Burada textBox içine yazılmış yazıyı Text haline getiriyor ve bağlandığımız serialPort üzerinden gönderiyoruz. Programı çalıştırıp veri gönderimini test edebiliriz artık. (Ben kendi bilgisayarımda sanal serial portlar oluşturup bu şekilde bir deneme sağladım, siz başka yöntemler ile de kontrol edebilirsiniz)
Görüldüğü üzere programda yazdıklarımız sorunsuz bir şekilde seçtiğimiz serial port üzerinden aktarılabiliyor. (Soru işaretleri Türkçe karakterlerden kaynaklanmaktadır bu problemin çözümü için dil kullanımına bakabilirsiniz.)
Projenin tamamına Github’dan ulaşabilirsiniz. Vakit ayırdığınız için teşekkürler:)


Github Linki : https://github.com/tugsadhk/SeriaPortCommunication-master

Bir cevap yazın