MATLAB GUI VERI AKTARMA Veri Ne Demek Bytelardan
MATLAB GUI VERI AKTARMA
Veri Ne Demek (Byte’lardan olıuşan dizi) Karşı tarafa veriler her zaman en küçük haliyle (byte ve bit) gönderilir. Veri gönderilmeye LSB’den başlanır Haberleşmede hat daima 1 seviyesinde Gönderilen= 0 XD 9 Veri gönderimi bitti hattı tekrar 1 yap Başlamak için 0’a çekilir Gönderilen= 0 X 12
Bilgisayarda SERI Port Yeni bilgisayarlarda seri port bulunmadığından sanal (virtual) COM PORT oluşturulur. RX (Veri alan uç) pin 2 TX (Veri gönderen uç) pin 3 GND (Toprak pin 5) Seri Port masaüstü bilgisayarlarda bulunurken, LAPTOP’larda (yeni nesil) bulunmaz Virtual COMPORT programından create Local Bridge (Köprü) seçilir.
Bilgisayarda SERI Port Yeni bilgisayarlarda seri port bulunmadığından sanal (virtual) COM PORT oluşturulur. Hangi iki port birbirine bağlanacağı seçilir. Create derseniz birbirne bağlı olarak COM 3 ve COM 5 sanal portları oluşturulur
Bilgisayar SERI PORT İzleme Programları Gelen verilerin gösterilme şeklinin seçileceği yer. Örnek Asc=A Hex=0 X 41 Decimal=65 Binary= 01000001 Hangi Com Port açılacağı seçilir. Burada COM 1 açılacaktır. Üzerine tıkladığınızda port ayarları açılır Gönderme tuşu Verilerin gönderileceği yer Birçok program olmasına karşın en kullanışlı ve kolay Docklight
Bilgisayar SERI PORT İzleme Programları COMPORT AYARLARI Hangi iki port açılacağı seçilir. COM 1, COM 2 vb Haberleşme hızı seçilir 9600, 19200, 115200 vb Parity biti seçilir(Odd, even veya None) Odd ve Even Parity Araştırın… Data bit seçilir. (1 byte 8 bit) Kaç tane stop bit olduğu seçilir ( 1, 1. 5 veya 2 )
Bilgisayar SERI PORT İzleme Programları Birçok program olmasına karşın en kullanışlı ve kolay Docklight Verilerin gösterilme şekli Veriler (ASCII seçili olduğundan bu halde görünüyor) Veriler periyodik gönderildiğinde veri gönderme periyotu Veriler periyodik mi gönderilecek?
MATLAB GUI SERI PORT HABERLEŞME MATLAB GUI ORTAMINDA SERI PORT HABERLEŞME İÇİN KOMPONENT YOK Buffer’da kaç tane veri Peşpeşe gelen iki veri olacak (karşıdan ne kadar arasındaki süre 10 sn’den veri gelecek) fazla ise yeni paketi kabul etme try serial_port = serial('COM 3', 'BAUDRATE', 115200, 'Input. Buffer. Size', 17, 'timeout', 10); Seri port nesnesi oluşturma kodu Hangi Seri port Veri haberleşme hızı serial_port. Bytes. Available. Fcn. Count = 17; serial_port. Bytes. Available. Fcn. Mode = 'byte'; Buffer’da kaç tane veri olacak Gelen verinin tipi byte olacak serial_port. Bytes. Available. Fcn={@serialcallback, h. Object, handles}; fopen(serial_port) Seri portu aç Hata olabilecek kodları try end bloğuna yazarız end (Her kod yazılmaz performanstan dolayı) Komponent olsaydı kendi callback event’ine düşerdi. (Örnek button callback’i) Bu nedenle bu callback’i Kendimiz yazmamız gerekir. Bu tanımlama işlemlerini GUI’nin açılış fonksiyonunda yazmamız gerekir. .
MATLAB GUI SERI PORT HABERLEŞME VERİ ALAN KISIM (CALLBACK) Verilerin alınacağı sericallback fonksiyonunu function serialcallback(obj, event, h. Object, handles) tanımlamalıyız. Formun başlangıcında tanımlanana seriport nesnesini burada global serial_port da kullanabilmek amaçlı global olarak tanımlanır. if (serial_port. Bytes. Available~=17) flushinput(serial_port); return; end data=fread(serial_port); flushinput(serial_port); Seri porttan gelen byte sayısı eşit değilse başlangıçta belirlenen değere (burada 17), seri porttaki veriyi sil ve geri dön Eğer bir önceki aşamada geri dönmemişse seri portta 17 byte veri bulunmaktadır (koddaki akış seri). fread fonksiyonu ile bu veriler okunabilir Okuduktan sonra seri porttaki verinin silinmesi gerekmektedir (Yeni veri alabilmek için).
MATLAB GUI SERI PORT HABERLEŞME VERİ GÖNDEREN KISIM global serial_port Formun başlangıcında tanımlanana seriport nesnesini burada da kullanabilmek amaçlı global olarak tanımlanır. fwrite(serial_port , ’ALIBABA’ ); Gönderilecek veri Veri gönderme fonksiyonu Gönderilecek seriport nesnesi (global olarak tanımlanan)
MATLAB GUI SERI PORT HABERLEŞME HATA OLUŞAN KISIM Eğer GUI’nin kapanma fonksiyonunda portu kapatmazsak tekrar açılışta hata verir ve bilgisayarı açıp kapatmamız gerekir GUI’nin kapanma fonksiyonu function figure 1_Close. Request. Fcn(h. Object, eventdata, handles) % h. Object handle to figure 1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: delete(h. Object) closes the figure Formun başlangıcında tanımlanana seriport nesnesini global serial_port burada da kullanabilmek amaçlı global olarak tanımlanır. fclose(serial_port); Seri portu kapat delete(serial_port); Seri portu sil
Ağ Üzerinden Veri Gönderimi TCP ve UDP Haberleşmesi Aynı ağ üzerinden haberleşebilemek için ağ isimlerinin aynı olması gerekmektedir. IP ve alt ağ maskesi bitsel düzeyde AND’lenerek elde edilir. Cihaz 1 IP Adresi 192 168 2 10 Cihaz 2 IP Adresi 192 168 2 18 Cihaz 3 IP Adresi 192 168 2 88 . 192 168 2 . Cihaz N IP Adresi 192 168 2 254 1111 binary karşılığı Cihaz 1 IP Adresi 192 168 2 10 Alt Ağ Maskesi 255 255 0 Cihaz 1 Ağ Adresi 192 168 2 0 Cihaz 2 IP Adresi 192 168 2 18 Alt Ağ Maskesi 255 255 0 Cihaz 2 Ağ Adresi 192 168 2 0 255 broadcast adresi Bitsel düzeyde AND işlemi ( 192. 168. 2. 10 =Decimal Değerler, binary’e çevirip AND işlemi yapmanız gerekir) 0000 binary karşılığı
Ağ Üzerinden Veri Gönderimi TCP ve UDP Haberleşmesi Transmission Control Protokol (Veri gönderebilmek için server’a bağlanmak gereklidir) Bağlanmadan veri gönderilmez User Datagram Protocol (Veri gönderebilmek için server’a bağlanmak gerekmez) Verinin gidip gitmediği kontrol edilmez UDP daha hızlıdır
Ağ Üzerinden Veri Gönderimi TCP ve UDP Haberleşmesi birçok ağ izleme programı var (HERCULES kullanışlı) Hangi portu dinleyeceğimiz Listen’a basınca dinlemeye başlar Server Modunda
Ağ Üzerinden Veri Gönderimi TCP ve UDP Haberleşmesi birçok ağ izleme programı var (HERCULES kullanışlı) TCP Client Modunda Veri gönderme tuşu Hangi porta veri göndereceğimiz Connect’e basınca porta bağlanır Server IP’si
Ağ Üzerinden Veri Gönderimi Veri gönderilecek Cihaz IP’si UDP Modu UDP’nin Lokalde hangi portu dinleyeceği Veri gönderme tuşu Veriyi hangi porttan göndereceğimiz TCP ve UDP Haberleşmesi birçok ağ izleme programı var (HERCULES kullanışlı)
MATLAB GUI UDP HABERLEŞME TANIMLAMALAR rhost. Receive = '127. 0. 0. 1'; rport. Receive = 1015; Localhost: Her bilgisayarın kendi localhost’u bulunur. Her bilgisayarda 127. 0. 0. 1 localhost’tur. Hangi porttan alınacağı
MATLAB GUI UDP HABERLEŞME MATLAB GUI ORTAMINDA UDP HABERLEŞME İÇİN KOMPONENT YOK udp nesnesi oluşturma kodu Hangi IP’den gelenler dinlenecek Lokalde hangi port’dan veri geleceği Buffer’da kaç tane veri olacak (karşıdan ne kadar veri gelecek) udp. Obj. Receive=udp(rhost. Receive, 'Local. Port', rport. Receive, 'Input. Buffer. Size', 35) udp. Obj. Receive. Bytes. Available. Fcn. Count = 35; udp. Obj. Receive. Bytes. Available. Fcn. Mode = 'byte'; Buffer’da kaç tane veri olacak Gelen verinin tipi byte olacak udp. Obj. Receive. Bytes. Available. Fcn = {@udp. Obj. Callback, h. Object, handles}; fopen(udp. Obj. Receive); Udp aç Komponent olsaydı kendi callback event’ine düşerdi. (Örnek button callback’i) Bu nedenle bu callback’i Kendimiz yazmamız gerekir. Bu tanımlama işlemlerini GUI’nin açılış fonksiyonunda yazmamız gerekir. .
MATLAB GUI UDP HABERLEŞME VERİ ALAN KISIM (CALLBACK) Verilerin alınacağı udp. Obj. Callback fonksiyonunu function udp. Obj. Callback(obj, event, h. Object, handles) tanımlamalıyız. Formun başlangıcında tanımlanana udp. Obj. Receive nesnesini global udp. Obj. Receive burada da kullanabilmek amaçlı global olarak tanımlanır. if (udp. Obj. Receive. Bytes. Available~=35) flushinput(udp. Obj. Receive); return; end data=fread(udp. Obj. Receive); flushinput(udp. Obj. Receive); Udp porttan gelen byte sayısı eşit değilse başlangıçta belirlenen değere (burada 35), udp’deki veriyi sil ve geri dön Eğer bir önceki aşamada geri dönmemişse UDP portunda 35 byte veri bulunmaktadır (koddaki akış seri). fread fonksiyonu ile bu veriler okunabilir Okuduktan sonra seri porttaki verinin silinmesi gerekmektedir (Yeni veri alabilmek için).
MATLAB GUI UDP HABERLEŞME TANIMLAMALAR ve VERİ GÖNDEREN KISIM Formun açılışında yazılması gereken kodlar rhost. Send = '192. 168. 2. 11'; UDP verinin gönderileceği port UDP verisinin hangi porta gönderileceği rport. Send=1007; udp. Obj. Send = udp(rhost. Send, rport. Send); UDP nesnesini aç fopen(udp. Obj. Send); global udp. Obj. Send UDP nesnesini oluşturur Formun başlangıcında tanımlanana UDP nesnesini burada da kullanabilmek amaçlı global olarak tanımlanır. fwrite(udp. Obj. Send , ’ALIBABA’ ); Gönderilecek veri Veri gönderme fonksiyonu Gönderilecek UDP nesnesi Button callback yazılması gereken kodlar
MATLAB GUI UDP HABERLEŞME HATA OLUŞAN KISIM Eğer GUI’nin kapanma fonksiyonunda portu kapatmazsak tekrar açılışta hata verir ve bilgisayarı açıp kapatmamız gerekir GUI’nin kapanma fonksiyonu function figure 1_Close. Request. Fcn(h. Object, eventdata, handles) % h. Object handle to figure 1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: delete(h. Object) closes the figure Formun başlangıcında tanımlanana seriport nesnesini global udp. Obj. Receive udp. Obj. Send burada da kullanabilmek amaçlı global olarak tanımlanır. fclose(udp. Obj. Receive); fclose(udp. Obj. Send); UDP portlarını kapat delete(udp. Obj. Receive); delete(udp. Obj. Send); UDP portlarını sil
- Slides: 21