0

Javafx Serial Port API — JSSC

Merhaba arkadaşlar bu yazımda javafx de  seri port okumanın altını üstünü karıştırmaya çalışacağım. Java’da süre gelen yapı nasıl vb. nasıl okuma yapılır nasıl bir mantıkla çalışır bunları anlatmaya çalışacağım. Malum artık dünya tek bir konu üzerinde gitmiyor. Birçok farklı iş alanı birbiri içine girdi ve herkesin yazılıma ihtayacı olur oldu. Bununla birlikte sadece yazılımında yetmediği durumlar ortaya çıktı. Yani bir insan düşünün hem bir programı yazılımı var aynı zamanda damar ve sinir bağlantıları var aynı zamanda iskelet sistemi var. Hepsi bir arada yani . işte bu hepsi bir aradılık herkesin birçok konuda az yada çok bilgi sahibi olmasını gerektirdi. Son zamanlarda popüler olan Arduino geliştirme kartları ile haşır neşir olanlar lamba yakıp söndürme işlemlerini geçip daha büyük işleri de yapmak ister oldu. Bilgisayardan veri aktarma gibi…. ki bu yazının konusu bu olacak. Bu yazımda Bilgisayardan böyle bir geliştirme kartına nasıl veri aktarabilirim. yada ordan aldığım bilgileri nasıl bilgisayar ortamına taşıyabilirim. Bu gibi sorulara javafx diliyle cevap vermeye çalışacağım. İşte buyrun başlayalım.

Aslında seriport okuma diye biraz araştırma yapsanız direk 3 parti bir çok yazılım ile seriport’tan bilgi okuyabilirsiniz. Ancak siz kendiniz bir proje/uygulama yaptınız peki bunun içine nasıl atacaksınız. Bunun için bir java api’sine ihtiyacınız olacak.  Seriport’dan veri okuma işi donanıma özgü bir iş. gerçek bir port üzerinden bu işi yapabileceksiniz.  Java Sun’da iken çıkan bir api var ancak bu api resmi bir api niteliğinde olmadığından 3 parti bir API’ye ihtiyacınız olacak.  Uzun yıllar boyunca javacılar için çok tercih edilin bir api olan RXTX apisi vardı. O da son versiyonunu 2010 yılında çıkararak kendini tarihe doğru attı. Bu api durdu ancak – Java Simple Serial Connector – diye bir Api çıktı . Kullanıcıların çoğunlukla tercih ettiği bir api haline geldi.

Java Simple Serial Connector

Bu JSSC apisi ( Github: https://github.com/scream3r) Alexey Sokolov tarafından GPL lisansı ile kullanıma sunuldu.  En son versiyonu 

olarak github’da gözüküyor.  Arduino ide tarafından da bu ide tercih edilmekte.  JSSC bütün platformlarda ve İşletim sistemlerinde çalışmakta. RXTX Apisine göre daha hızlı ve daha stabil. Tek bir .jar dosyası halinde indiriyor ve projenize ekliyorsunuz extra herhangi bir şey eklemeye gerek yok.  En son jar dosyasını https://github.com/scream3r/javasimple-serial-connector/releases bu adresten indirebilirsiniz. Projenizde jssc  paketi olarak gözükecek eğer kütüphanelere bakarsanız. 

Şimdi bir örnek üzerinden giderek konuya hakim olmaya çalışalım. 

Seriport iletişim için Serial ve OrientationFX classları ile StringProperty nesnemizi kullanacağız. StringProperty nesnemizle son satırdaki bilgiyi okuyacağız. 

SerialPort class’ımızı yazalım

Şimdi yukarıdaki kodları tek tek nasıl çalışıyor diye inceleyelim.

İlk olarak jssc.jar api’sini projemize ekliyoruz. Bağlantı kurabileceğimiz muhtemel portları bir liste haline getiriyoruz.  Kendi sistemenizdeki bağlı portları aktif olarak alabileceğiniz gibi başka sistemlere ait portlarıda silebilirsiniz. ardPort değişkenine herhangi bir port atamasını burada yapmıyoruz constructor’dan doğru atama yapacağız.

connect() metodunu inceleyelim. Öncelikle connect metodu bizim sistemimizde olan geçerli portları buluyor. 

Eğer bu metod ile geçerli bir port bulursa portu açmak için bazı parametrelerlerle denemeler yapacak. 

Evet bağlantı parametrelerini de geçtik . Şimdiki işimiz  port açıldığına göre , artık portu dinlemeye başlamanız lazım. SerialPortEvent buffer’ı sürekli kontrol eder ve event.getEventValue()  metodu byte sayısı belirlenir.readString(int byteCount) metodu buffer doldukça datayı döndürecek.  Okunan veriler bir StringBuilder’da saklanıbilir her satır “\r\n”  ile ayrılabilir. Aynı zamanda her okunan satır için bir de zaman bilgisi ekleniyor. Eğer arduino ile birden fazla değeri port’a yazıyorsanız bunların arasına anlaşılır bir ayraç ekleyerek porta yazmalısınız.

Son olarak disconnect() metodunu inceleyceğiz. bu metod hem listener’ı kaldırıyor hemde portu kapatma işlemini yapıyor.

Şimdi Main metodu içinde çağıralım ve değer okuması yapalım bakalım neler olacak.

bu örnekte getLine ile ulaşılan bir Property nesnesi olduğunu da unutmalayalım. 

Kaynak: JAVAFX 9 By Example, 3rd Edition Kitabından çevirmeye çalıştım . herkese kolay gelsin

admin

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir