mütevâzi yenilikler, güncel teknolojiler,elektronik mühendisliği falan..filan

Delphi ile Serial Port Haberleşme II (Kodlama örnekleri)

Daha önceki yazımız da Delphi ile serial port haberleşme için gerekli olan comport (cportlib) kütüphanesinin kurumunu anlatmıştık.

Bu yazımızda bilgisayarımızla dış dünyadaki herhangi bir cihazın serial port üzerinden nasıl haberleşebileceğini ele alacağız.


Konuya girmeden önce  özellikle dizüstü pc kullanıcılarının ilk soracağı soru hakkında bilgi vermek istiyorum " Bilgisayarımda serial port bulunmuyorsa ne yapmalıyım ? " 


Cevap: "usb-serial çeviriciler" bu cihazlar piyadasan 30-60 TL arasında temin edebileceğiniz driver kurulumuyla sorunsuz çalışabilen aletlerdir.



Bir diğer önemli husus ise eğerki PC Uart'dan(serial portundan) bir başka TTL düzeyindeki bir microkontrolcü serial arayüzü ile haberleşme istiyorsanız muhakkak arada Max232 vb. chiplerden kullanmanız gerekecektir belki bu konuyu elektronik başlığı altında tekrardan ele alabiliriz.

Bağlantı işlemlerinizin halledilmiş olduğunu varsayıp kodlama konusuna geri döneceğim.

ilk olarak açmış olduğunuz formun içerisine Eklenti paletimizin en son kısmında görülen "Cportlib" sekmesinden Comport modülünü seçelim ve forma ekleyelim.

Eklediğimizde Object Inspector penceresinde bu modulle ilgili ayarların (Boudrate, buffer, connected vb.. ) açılmış olduğunu göreceksiniz. 


Bu ayarları dilerseniz buradan dilerseniz "form.crate" olayına ekliyeceğiniz "ComPort1.ShowSetupDialog;" koduyla 

ilk açılışca bir dialog penceresi olarakta gösterebilirsiniz.

Comport ayarlarımızı yaptıktan sonra gelelim data yazma ve data okuma olaylarına.

 (Tabi öncelikle portu aç/kapat olayını yapmamız gerekiyor bunuda herhangi bir butonun onclick olayına "comport1.open;"yada "comport1.close;" şeklinde gerçekleştirebilirsiniz.)  

Data yazmada kullanacağımız kod "ComPort1.WriteStr('deneme');"
şeklinde olacaktır  fakat okuma işlemi biraz farklı. bunun için yapmamız gereken önceklik comport1 modulünü seçtikten sonra Object inspector penceresindeki Events'lara gelip
OnRxChar olayına aşağıdaki kodları girmek.


procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
data:string;
begin

ComPort1.Readstr(data,Count);
Memo1.Lines.Add(data);

end;

Bu işlemde görmüş olduğunuz RXchar olayı içerisinde ne zaman ki data gelmiş olsa comport1. readstr koduyla gelen datayı "data" string'ine aktaracak ordanda görüldüğü üzre memo text içerisine aktarıp her gelen bilgiyi yeni bir satıra yazacaktır.



Bu örnekle ilgili kaynak kodları buradan indirebilirsiniz.