19 Kasım 2018 Pazartesi

BİLGİSAYARDA KULLANILABİLECEK SERİ HABERLEŞME ARAYÜZ PROGRAMLARI

Bilgisayarda Kullanılabilecek Seri Haberleşme Arayüz Programları

Daha önceki yazılarda Orange pi veya bu tarz bir elektronik kart ile bilgisayar arasında seri veri iletimi için gerekli parametrelere, donanımlara baktık. Bu haberleşme sırasında haberleşme yapılandırma bitlerinin her iki cihaz için farklı olması durumunda neler olacağından bahsettik. Bu yazıda bilgisayar üzerinde çalışan seri arayüz programlarına bakacağız.

Seri arayüz programları, üzerinde haberleşmenin hangi değerler için olacağını ayarladığımız, ayarladığımız porttan bu parametreler dikkate alınarak veri okuyabildiğimiz veya yine aynı port üzerinden karşı tarafa belirttiğimiz parametreler ile veri gönderebildiğimiz programlardır.

Bu yazıda size toplamda 4 programdan bahsedeceğim.

1) Putty

Putty bilgisayarda kullanılabilecek çok kapsamlı bir uygulamadır. Seri haberleşme bitlerini aşağıda gördüğünüz gibi kendi değerlerinize ayarlayarak arayüzü açın.



"Serial" sekmesinden bu ayarları yaptıktan sonra "Session" sekmesine gelerek programı açın.




Örnek kodumuzu açıp çalıştırdığımızda ekranda yazıların okunabilir fakat kayık bir şekilde olduğunu görüyoruz.  Aşağıdaki ekran görüntüsüne bakarsanız bizim kodda belirtiğimiz "\n" karakterlerinin normalde satır başı yapması gerekiyordu ama bu ekran görüntüsünde görüyoruz ki son yazılan karakterin bittiği yerden bir alt satıra inmiş.

Daha sonraki denemelerde gördüm ki biz "\n" karakterini koymazsak "ser.write" ile yazılacak bir sonraki kelime en son yazdırılan kelimenin bittiği yer ve bir satır alttan başlayacak. Birde biz "\n" karakteri koyduğumuz için iki satır alttan ve en son yazdırılan kelimenin bittiği yerden başlıyor.



Peki bunun çözümü nedir? Böyle kayık bir görüntü istemediğimiz için ASCII tablosunu açıp oradan satır başı için hangi ASCII sayısının girilmesi gerektiğine bakıyoruz. Satır başı için gerekli olan ASCII sayısının '13' olduğunu görüyoruz. Bir önceki yazıda kullandığım "chr(sayı)" yapısını kullanarak '13'ü bir karaktermiş gibi seri ekrana gönderiyorum. Bunu "ser.write()" ile bir şey yazdırdığım tüm satırlardan sonra kullanıyorum. Böylece yazılar düzelmiş oluyor.







2) Hercules

Kullanabileceğimiz bir diğer seri arayüz programı da Hercules. Alttaki görüntüde görebileceğiniz üzere sağ kısımdan haberleşme parametrelerini ayarlayabilir ve haberleşmeyi başlatabilirsiniz.



Eksisi olarak bitiş biti için herhangi bir ayar bulunmuyor.

Örnek kodu çalıştırdığımızda aşağıdaki görüntü de görebileceğiniz üzere program çıktısı, alınan veriler rahat bir şekilde gözükmektedir. Veri akışı "Received/Sent data" kısmında gösterilir. Sizden herhangi bir veri gerişi istendiğinde imleç bu kısımdayken, klavyeden yazacağınız veriler karşı tarafa gönderilir. "Enter" ,  "boşluk" vb kullanımların hepsi bir karakter niyetine geçer. Eksta olarak sık kullandığınız karakterleri veya kelimeleri programın alt kısmındaki kutucuklara kaydedebilir ve buradan "Send" diyerek göndererek işiniz kolaylaştırabilirsiniz.



Gördüğünüz gibi burada seri ekranın rahat bir şekilde kullanıp yazdığımız python programını rahat bir şekilde kontrol edebiliyor, veri alışverişi sağlayabiliyoruz.

3) Serial Port Terminal v1.4

Değineceğimiz bir diğer program ise "Fırat Deveci" sitesinden indirdiğim "Serial Port Terminal v1.4"tür.

Örnek kodumuzu çalıştırdığımızda alınan veriler düzgün bir şekilde görüntülenmektedir.



Haberleşme parametrelerinin hepsini içerir ve bunları ayarlama imkanı verir.

4) RealTerm: Serial Capture Program

Programı açtığımızda karşımıza haberleşme parametrelerini kolayca ayarlayabileceğimiz bir ekran çıkıyor.



"Port" sekmesinden ayarlamak istediğimiz haberleşme parametrelerini ayarlayabiliriz. Ayarladıktan sonra "Open" kısmına tıklayarak veri iletimi için programı aktif hala getirebilirsiniz.

Programın sağladığı en güzel özellik veri iletiminde bir hata olduğunda "Display" kısmındaki veri tiplerini istediğimiz tip ayarlayarak gelen verinin ASCII, HEX halini görebiliyoruz. Bu da bize gönderilen ve alınan veriyle alakalı karşılaştırma yapma imkanı tanıyor.



Kötü bir özelliği seri ekrandan girdiğiniz karakterler ekranda gözükmüyor.

Satır Sonu(EOF) Karakterleri


Burada alınan metnin nasıl gözükeceğini gösterene seçenekler var. Eğer bu seçeneklerden ilk seçenek olan "Ascii" seçilirse alınan verilerin (EOF)(End of Line)satır sonu karakterleri gözükecektir. Peki bu ne demek oluyor?

Satır sonu karakterleri, bu karakterden sonra yeni satırın başlayacağı anlamına gelen karakterlerdir. Temelde 2 adet satır sonu karakteri vardır ve farklı işletim sistemlerinde değişiklik göstermektedir. Bunlar "\n" ile gösterilen "LF" ve "\r" ile gösterilen "CR"dir.

Doc ve Windows'ta "\r\n" ile satır sonu belirtilirken Unix'te "\n" ile satır sonu gösterilir. Mac işletim sisteminde ise eskiden "\r" kullanılıyordu fakat artık "\n" kullanılıyor.

Peki CR ve LF nedir?
CR(Carriage Return) = Aşağı doğru ilerlemeden satırın başına dönmek anlamın gelir. "\r" ile ifade edilir ve ASCII karşılığı '13'tür.

LF(Line Feed) = Bir sonraki satıra ilerlemek anlamına gelir. Bulunduğu satırı sonlandırır ve yeni satıra geçer. "\n" ile ifade edilir ve  ASCII karşılığı '10'dur.



Yukarıdaki ekran görüntüsünde gördüğünüz gibi örnek kodu çalıştırdığımda alınan verilen ekrana bu şekilde geliyor. Aynı görüntüyü "putty"de de görmüştük. Fakat burada gördüğümüz görüntü daha anlamlandırılabilir. Çünkü burada satır sonu karakterlerinin nerede kullandığını ve hangilerinin kullanıldığını görebiliyoruz.



Örnek koda bakacak olursak;

ser.write('\nMerhaba Lutfen [y] veya [n] karakterlerinden birini tuslayiniz: ') 
kod satırını inceleyelim. Başlangıçta "\n" kullanılmış yani LF karakteri  Bu ifadeyi kullandıktan sonra Linux'da bir alt satıra geçer fakat Windows'da öyle değil. LF son karakterin bulunduğu yerden bir alt satıra iner. Bundan sonraki karakter buraya yazılır. Seri ekrana baktığımızda da bunu görürüz.

Eğer seri ekranda verilerin düzgün bir şekilde gözükmesini istiyorsak bilgisayara gönderilecek verilerde bir sonraki satıra geçme işleminde "\r\n" yani "CRLF" kullanmalıyız.





Böylece sorunumuz çözülmüş oldu. Şuan bu yaptığımız ile "putty"deki sorunu çözerken yaptığımı temelde aynı şeyler. Birinde "\r" ile satır başı yapmış olduk ki bu da ASCII'de '13'e  denk geliyor. Putty için de sorunu bilgisayara '13'ü karakter olarak göndererek çözmüştük.

Tekrar "realterm" seri arayüz programına dönecek olursak program arayüzündeki "Display" sekmesinde aşağıdaki görüntüde belirtiğim 'ascii' seçeneğini seçerseniz bu karakterleri görmezsiniz.




"unit8" seçeneğinin seçersek  seri ekrana yazdırılacak tüm karakterlerin ASCII karşılığını görebiliriz. Bu da bize seri ekrana giden karakterleri daha açık yorumlama imkanı verir.





Bu yazımızda bilgisayarda seri haberleşme arayüzü olarak kullanabileceğim 4 tane arayüzden bahsettim. Ben bu arayüzlerden "Hercules" programını kullanıyorum. Hem sade hem de kullanışlı geliyor. Tabi ki ekstra bir durum olursa bu programlara da başvuruyorum. Seri haberleşme arayüzü programları haricinde bir de satır sonu karakterlerine değindim. Her iki işletim sisteminde de satır sonu farklı şekilde ifade edildiğinden bu bilgi işimize yaradı.

Okuduğunuz için teşekkür ederim. Aklınıza takılan bir soru veya karşılaştığınız bir sorun olduğunda yorumlarda belirtebilirsiniz. Burada eksik olarak anlattığımı düşündüğünüz veya sizlerin gerekli olarak gördüğünüz bilgileri yine yorumlarda yazarsanız, bundan herkesin faydalanmasını sağlamış olursunuz. Herkese iyi çalışmalar.

Kaynakça:




Hiç yorum yok:

Yorum Gönder

Öne Çıkan Yayın

ORANGE PI PYTHON UART

ORANGE PI PYTHON UART Python kurulum  yazısında Orange pi'de Python konusuna giriş yapmıştık. Daha sonra  Python Gpio  yazısında gir...