Delphi Can
USCO Protokolü ve API - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Mikrodenetleyiciler ve Gömülü Sistemler (https://www.delphican.com/forumdisplay.php?fid=1128)
+---- Forum: Gömülü Sistemler (https://www.delphican.com/forumdisplay.php?fid=1132)
+---- Konu Başlığı: USCO Protokolü ve API (/showthread.php?tid=4850)



USCO Protokolü ve API - guverdik - 21-05-2020

(Wikipadia’dan) Application Programming Interface (API). Bir uygulama programlama arayüzü (API), birden fazla yazılım aracıları arasındaki etkileşimleri tanımlayan bir bilgi işlem arayüzüdür. Yapılabilecek arama veya istek türlerini, bunların nasıl yapılacağını, kullanılması gereken veri formatlarını, izlenecek sözleşmeleri vb. tanımlar. Kullanıcıların çeşitli şekillerde ve değişen derecelerde mevcut işlevselliği genişletmek, böylece aynı zamanda uzatma mekanizmaları sağlayabilir.[1] Bir API, bir bileşene özgü tamamen özel olabilir veya birlikte çalışabilirliği sağlamak için bir endüstri standardına göre tasarlanabilir. Bazı Apı’lerin belgelenmesi gerekir, Diğerleri desteklenen işlevselliği belirlemek için “sorgulanabilecek” şekilde tasarlanmıştır. Diğer bileşenler / sistemler yalnızca API’YE dayandığından, API’yi sağlayan sistem (ideal olarak), kullanıcılarını etkilemeden bu API’NİN “arkasındaki” iç ayrıntılarını değiştirebilir.

Bugün, REST ve web hizmetlerinin HTTP üzerinden yükselmesiyle, terimin genellikle başka bir bağlam verilmediğinde bu tür hizmetlerin Apı’lerine atıfta bulunduğu varsayılmaktadır. Bazen API terimi, uzantı ile, yazılım varlıklarının alt kümesine (kod, alt bileşenler, modüller vb.) başvurmak için kullanılır. Aslında bazı kapsayan bileşen veya sistemin API’si uygulamaya hizmet eder. Web API’leri, bir kuruluş ile varlıklarını kullanan uygulamalar arasında etkileşimlerin gerçekleştiği tanımlanmış arabirimlerdir, bu da işlevsel sağlayıcıyı belirtmek ve API kullanıcıları için hizmet yolunu veya URL’sini göstermek için bir hizmet düzeyi anlaşması (SLA)’dır. Bir API yaklaşımı, farklı tüketici türlerine hizmet veren farklı uygulamalara bir dizi hizmet için bir program arayüzü sağlama etrafında dönen mimari bir yaklaşımdır. Web geliştirme bağlamında kullanıldığında, bir API, genellikle genişletilebilir biçimlendirme Dili (XML) veya JavaScript nesne gösteriminde (JSON) yanıt mesajlarının yapısının bir tanımıyla birlikte, yüksek seviyeli metin aktarım protokolü (HTTP) istek mesajları gibi bir dizi özellik olarak tanımlanır.

Wikipedia’dan alıntı yaptığım girişten sonra, şimdi bizim API yapımıza gelelim. Senaryo şöyle, En altta bir veri tabanı olan MySQL var, alt katman. Başka bir veritabanı da olabilir. Hemen üstünde bizim geliştirdiğimiz SERVER.DLL isimli bir yazılım. Bu yazılım veritabanı ile HTTP protokolü arasındaki bilgi alış verişleri çözüyor. Orta katman diye de bahsedilir. Üst katman da ise kuralları konulmuş API yapısı kullanılarak geliştirilen her türden ve her çeşit işletim sistemlerinde çalışan yazılımlar





DataSnapCloud.png


Bu yapımızda sadece VERİTABANI ile olan kodlamalar yoktur. Size özel daha farklı işleri de yapan fonksiyon ve prosedürler de olabilir. Örneğin web server’ımızın sistem saatini gösteren bir metodumuz vardır.

function ServerSaat: string;
Siz browser üzerinden veya herhangi bir programlama dili ile bu API yi gönderdiğinizde size geri dönen bilgi, JSON formatındadır. Bu formatlar ilk başta karmaşık gibi görülse de artık BÜYÜK DATA (Big Data) nın ana yapıları artık bu YAPI’dır. https://jsonformatter.org/ bu sitede kendinizin veya herhangi bir yerden GERİ dönen cevapları daha da anlamlı olarak görebileceğiniz JSON yapılarını inceleyebilirsiniz. Örnek API komutu: http://www.guverdik.com/DATA_SNAP_SERVER/SERVER.DLL/datasnap/rest/TServerMethods1/serversaat bu komutu browserdan gönderdiğinizde size aşağıdaki gibi bir cevap döner.


image-1.png


Mevcut SERVER.DLL nin verdiği hizmetlerden bazıları;

TIVA TM4C123G USCO 01 (Yerli Gömülü Sistem) protokolü ile çalışan mikrodenetleyiciler.

TIVA TM4C1294 USCO 02 protokolü ile çalışan mikrodenetleyiciler

STM32 USCO 01 protokolü ile çalışan mikrodenetleyiciler

Arduino UNO, NANO ve MEGA mikrodenetleyiciler (Yaşar ETİ hocamızın geliştirdiği GOMIO protokolü ile çalışan https://github.com/yasareti/Gomio)

DELTA ve SIEMENS PLC ler (İsteğe göre başka marka larda dahil edilir)



Şimdilik sadece USCO 02 protokolü ile kontrol edeceğimiz bazı örneklemeler yazıp konumuzu bitirelim.

http://www.guverdik.com/DATA_SNAP_SERVER/SERVER.DLL/datasnap/rest/TServerMethods1/cihazID/6/:0348:1181:1660:1190:1599:1415:1689:1600:1532:1508:1479:1478:1575:1468:1554:1450:1621:1469:1559:1527/00000000000000/000/000/000000/11100001110000000000000000000000000/1/0
bu bilgiyi browserdan ve/veya herhangi bir programlama dili ve/veya script dilleri ile 20 adet ADC sensör bilgisini, 14 adet Digital Input, Sıcaklık, Nem, 37 adet Digital Output, Reset ve Elektrik Kesildi bilgileri TÜM MCU üzerinden toplanır bir VERİ PAKETİ haline getirlir ve URL ile birleştirilip WEB bağlantısı üzerinden gönderilir. Geri dönüş olarak aşağıdaki gibi bir JSON bilgisi gelir.


{"result":["6: OK <do 00 0;do 01 0;do 02 0;do 03 0;do 04 0;do 05 0;do 06 0;do 07 0;do 08 0;do 09 0;do 10 0;do 11 0;do 12 0;do 13 0;do 14 0;do 15 0;do 16 0;do 17 0;do 18 0;do 19 0;do 20 0;do 21 0;do 22 0;do 23 0;do 24 0;do 25 0;do 26 0;do 27 0;do 28 0;do 29 0;do 30 0;do 31 0;do 32 0;do 33 0;do 34 0;aidi 0;pwm 00 05000 1;pwm 01 10000 1;pwm 02 10000 1;pwm 03 10000 1;pwm 04 10000 1;sure 01000  >"]}


USCO Protokolü ve API - frmman - 21-05-2020

Teşekkürler @guverdik hocam.


Cvp: USCO Protokolü ve API - guverdik - 22-05-2020

(21-05-2020, Saat: 17:36)frmman Adlı Kullanıcıdan Alıntı: Teşekkürler @guverdik  hocam.
Eyvallah @frmman kardeşim. Gerçi konu yeni olanlar için tam anlaşılır değil ama. Şöyle bir kısa açıklama da yapmak isterim. Özellikle en altta olan URL+URI kısmını MİKRODENETLEYİCİ  kendi iç dünyasnda üretip WEB'e gönderiyor. Bu sözdimi kullanıcının gözüne hiç bir zaman gözükmez ve EL'i ile yazmaz. Hemen akabinde WEB te bulunan SERVER.DLL dosyası, gelen bu SENSÖR bilgilerini analog ve digital input VERİ TABANI TABLOSU'nda güncelleme (UPDATE) yapıyor. Bu aşamada istenilirse sıklığı da belirtilebilen bir süre aralığında VERİ de başka bir tablo da TOPLANABİLİR. Güncellemenin sonunda yine SERVER.DLL dosyası, başka bir tablo olan USCO KOMUT tablosuna bakıp ne kadar PIN var ise (DIGITAL OUTPUT, PWM) o ÇIKIŞ bilgilerinden tekrar bir VERİ PAKETİ üretiliyor. Bu paket WEB'ten MCU'ya doğru olur. Mikrodenetleyicinin gönderdiği bilginin hemen akabinde SERVER.DLL dosyasının ürettiği JSON formatındaki bilgiyi MCU alır gerekli PARSE'lamadan sonra kullanıcının veri tabanında işaretlediği PIN durumlarını tekrar ve tekrar ve tekrar PARSE'lanan veriler İŞLETİLİR. Tüm bu işler olurken MCU MODEM veya switch hub a bağlanır ve DHCP den otomatik IP alır ve modem içinden PORT açmaya da gerek yoktur. İşin tüm PÜF noktası WEB te her bir CİHAZ'a ID verilmesidir. Her bir ID'ler ise bir KULLANICIYA atanır. Yani bir kullanıcının bir den fazla CIHAZ ı olabilir. CIHAZ ların TİP'i ise farklı farklı olabilir. Yani TIVA ARM, STM32F, ST NUCLEO ARM, Arduino UNO, NANO, MEGA, DELTA PLC, SIEMENS PLC veya herhangi bir mikrodenetleyici veya PLC olabilir. TEK KURAL makalede belirtilen SÖZ DİZİMİ şekllinde protokol üretmek ve PIN durumlarını kendi amacına göre düzenlemek.