Sercanca Çözümler..

Mikrotik – Lazarus-Delphi API Kullanımı #2

Mikrotik – Lazarus-Delphi API Kullanımı #2

Bir önceki yazımızda Lazarus ve FPC ile mikrotik API kullanımına giriş yapmıştım. Gerekli ayarların yapılması, Gerekli kütüphaneler ve kütüphanelerin tanımlanmasını konu almıştım. Bu sefer cihaza nasıl bağlantı yapılıp veri trafiğinin yapılacağına değineceğim.

Lazarus’u açıp boş bir proje oluşturalım.

Öncelikle projemizi bir klasöre kaydelim.

Projemizde aşağıdaki kontrolleri oluşturalım. Nesnelere verdiğim isimleri yanlarına yazdım.

4 adet TEdit; IPAdres,Port,Username,Password

2 adet TButton; Baglan,KomutGonder

2 adet TMemo; Komut,Sonuc

Örnek uygulamanın tasarımını aşağıdaki gibi yapalım.

Bu aşamada “Kaynak düzenleyici“ye geçelim ve aşağıdaki gibi gerekli kod parçalarını ekleyelim.

Dikkat etti iseniz Uses kısmında tanımlı kütüphanelerin devamına “RouterOSAPI” ekleniyor. Daha sonra Global değişken olarak “ROS,Res,ROSFlagvar blogunda tanımlanıyor. Yazının ilerleyen bölümlerinde açıklamalarını ve gerekliliklerini anlatacağım.

Gerekli tanımlamaları yaptıktan sonra uygulamanın OnCreate olayına aşağıdaki kodları yazıp gerekli nesneleri oluşturuyoruz.

Uygulama kapatılınca oluşturduğumuz nesneleri hafızadan siliyoruz. Bunun için FormDestroy olayına aşağıdaki kodları iliştiriyoruz.

Bu aşamadan sonra cihaza bağlantı kurmaya sıra geldi. Daha önce bağlantı için oluşturduğumuz “Button” nesnemizin Click olayına gerekli kodları iliştiriyoruz.

Cihaza bağlantı kurma ve bağlantı kesme işlerini tek butona yüklediğimiz için “Tag” özelliğinden faydalanacağız. Bu sayede buton ismini değiştirip butona her bastığımızda farklı görev yükleyebiliriz.

Yukarıdaki kod bloğunda bağlantının sağlanıp sağlanmadığını “ROSFlag” değişkeninde tutuyoruz. Eğer bağlantı kuruldu ise True kurulmadı ise False değeri yüklenir. Bu sayede program akışında durumu kontrol edebiliriz.

Bağlantımız başarılı ise “Res := ROS.Query([‘/system/resource/print’], True);” kodu ile cihaza sorgu gönderiyoruz. Dönüş değeri “Res” değişkenine yükleniyor. Sonrasında kullanmak istediğimiz bilgiyi alacağız.

Dönüş değerine göre eğer bir bilgi dönecekse (HATA,BILGI..vs) “Res.Trap” değişkeni True olacaktır. Biz buna bakarak dönüş bilgisini alabiliriz. Dönen hatayı ise “ROS.LastError” değişkeninden okuyabiliriz.

Eğer sorunsuz bağlantıyı kurdu isek artık dönen sorgudan istediğimiz veriyi alabiliriz. Mesela Board-Name bilgisini almak istersek “Res[‘board-name’]” kodunu kullanabiliriz.

Mikrotik komutlarını internetten araştırabileceğiniz gibi geri dönen sonuç içinden de ayıklayabilirsiniz.

Programı bu aşamaya getirince ufak bir deneme yapalım.

Gördüğünüz gibi IP Adresi,Port,Kullanıcı Adı ve şifreyi girip Bağlan butonuna basınca yukarıdaki gibi dönüş alınmaktadır. Ben dönüş olarak cihaz modeli ve versiyonu gösterdim. İhtiyaca göre şekillenebilir.

Şimdi cihaza kendimiz komut yazıp çalıştıralım.

Bunun için KomutGonder butonumuzun Onclick özelliğine aşağıdaki kodu yazmalıyız.

Kodun tamamını açıklamayacağım. Sadece şunu söylemek istiyorum. Memo gibi bir kontrole girilen komutları işletmek için 2 yöntem var. Eğer komut uzunluğu ve satır sayısı değişirse String Dizisi oluşturup cihaza göndermeliyiz. Yukarıdaki kod bu işi yapmaktadır.

Eğer değişken olmayan bir komut gönderecekse tek satırda gönderebiliriz.

Örnek  : Res := ROS.Query([‘/interface/print’,’?name=WAN’], True); 

Bu sorguda İsmi WAN olan interface bilgileri geri dönecektir. Araya virgül koyarak komutları yan yana yazabiliriz.

Aynı komutu birde uygulama ile yapalım.

Gördüğünüz gibi  komutu Memoya yazıp çalıştırınca sonuç sağ tarafta yukarıdaki gibi çıkacaktır.

Eğer komutta 2. satır olmasaydı sadece bütün interface bilgilerini yükleyecekti. Datalar çekildiğinde her interface bilgisi alındığında varsa sonraki interface bilgisine geçmek için “Res.Next” kodu kullanılır. Yukarıdaki kodu incelerseniz daha net görebilirsiniz.

Sanırım anlatacaklarım bu kadar. Bu bilgiler eşliğinde Lazarus ile Mikrotik Cihazınıza hükmedebilirsiniz. Size örnek uygulamayı vereceğim. Üzerinde deneme yanılma yaparak bilgilerinizi pekiştirebilirsiniz.

Yazının birinci bölümü : http://www.sercanca.com/mikrotik-lazarus-delphi-api-kullanimi-1/

Uygulamayı indirmek İçin : Mikrotik – Lazarus-Delphi API Kullanımı

Mikrotik API Lazarus Client Uygulaması
https://github.com/sercanca/RouterOS-API-Lazarus-Client

Başka bir yazıda görüşmek üzere,

Sercan TEK

BİR YORUM YAZIN

This site uses Akismet to reduce spam. Learn how your comment data is processed.

ZİYARETÇİ YORUMLARI - 1 YORUM
Yayımlanan tüm yazılar Sercan TEK tarafından yazılmaktadır. İzinsiz kullanımı yasaktır.