2014.06.22.
16:55

Írta: harsanyireka

13. /5) Kommunikációs könyvtárak: Ethernet

Lektorált tananyag, ami a BKF Digitális és Kollaboratív Művészet (DIKOM) pályázatnak keretén belül valósult meg.

Szerző: Harsányi Réka, Társszerző: Juhász Márton András, Lektor: Fernezelyi Márton

 

Az OSI (Open Systems Interconnection) modell szerint – mely hét absztrakt rétegre osztja a kommunikációs technológiák funkcionális szintjeit – az Ethernet 1985 óta a számítógépeket összekötő hálózatok fő kommunikációs technológiai szabványa és fizikai rétegtől az adatkapcsolati rétegig nyújt szolgáltatásokat. A fizikai réteg magát a hardware-t jelenti, az adatok bitenkénti csatornákra juttatását. Az adatátviteli réteg pedig két hálózati elem közötti átvitelt biztosító eljárásokért felelős.

13.9. †bra Open Systems Interconnection modell.png

Open Systems Interconnection modell

Az Ethernet kiegészítő modullal (shield) és a hozzá tartozó könyvtár segítségével eljuthatunk a hálózati rétegig és internetképessé tehetjük az Arduinot. A shield a Wiznet, SPI kommunikáción alapuló W5100-as integrált áramkörére épül és fenntartja az SD kártya csatlakoztatásának lehetőségét is. A kiegészítőt elég csatlakoztatni. A következő példákban megnézzük, hogyan lehet bejövő kapcsolatokat kezelő szerverként és kimenőket intéző kliensként egyaránt működtetni.

 13.10. †bra Arduino Ethernet Shielddel.jpeg

Arduino Ethernet Shielddel

 

 13.11. †bra Csatorn†k kioszt†sa az Eethernet Shieldhez.png

Csatornák kiosztása az Eethernet Shield-hez

 

Ethernet osztály

Ethernet.begin()

Az ethernet könyvtárat és a hálózati beállításokat inicializálja a parancs. A begin() függvénnyel megadhatjuk az eszközünk MAC (Media Access Control – fizikai) és az IP (Internet Protocol) címét. A könyvtár támogatja a DHCP (Dynamic Host Configuration Protocol) alapú IP-cím igénylést, ezért ha csak a fizikai címet adjuk meg, ebbe az üzemmódba kerül. Az automatikus címigényléshez a könyvtár nagyobb hányada töltődik az Arduinoba, ezért ez a mód sokkal több memóriát igényel, mintha csak statikus címet adnánk meg. Ethernet.begin(mac) sikeres cím igénylés esetén 1-et, sikertelen esetén 0-át ad vissza.

Szintaxisa:

Ethernet.begin(mac),

Ethernet.begin(mac, ip),

Ethernet.begin(mac, ip, dns),

Ethernet.begin(mac, ip, dns, gateway),

Ethernet.begin(mac, ip, dns, gateway, subnet).

Paraméterei:

mac: 6 bájtos tömb, az eszköz fizikai címe,

ip: 4 bájtos tömb, az eszköz IP-címe,

dns: 4 bájtos tömb, DNS (Domain Name Server) IP-címe,

gateway: 4 bájtos tömb, hálózati átjáró címe,

subnet: 4 bájtos tömb, a hálózat alhálózati maszkja, alapállapotban 255.255.255.0.

 

Ethernet.localIP()

Visszaadja az eszköz aktuális IP-címét. Ez akkor hasznos, ha automatikusan igényeltük.

 

Ethernet.maintain()

DHCP használata esetén egy meghatározott időre kap az eszköz IP-címet. Amikor ez lejár, meg kell újítani. Ezzel a függvénnyel a lejárt cím helyett újat igényelhetünk, ami a DHCP szervertől függően lehet ugyanaz, egy teljesen más, vagy semmi is. Egy számot ad vissza, ami ha:

0: nem történt semmi,

1: cím megújítása sikertelen,

2: cím megújítása sikeres,

3: újrakapcsolódás sikertelen,

4: újrakapcsolódás sikeres.

  

IPAddress osztály 

IPAddress()

Meghatározza az IP-címet, ami lehet helyi és távoli cím is.

Szintaxisa:

IPAddress(address) 

Paramétere:

address: vesszőkkel elválasztott 4 bájt (pl.: 192,168,1,1).

Arduino kód: 64IPaddress

Arduino kód: 65localIP

 

Server osztály 

EthernetServer()

Létrehoz egy szervert, ami a bejövő kapcsolatokat figyeli egy előre meghatározott porton.

Szintaxisa:

Server(port).

Paramétere:

port: a port száma, amit a szerver figyel.

Példakód:

EthernetServer server = EthernetServer(23);

 

server.begin()

Szól a szervernek, hogy kezdjen figyelni.

 

server.available()

Visszaadja egy csatlakozott kliens címét, ha rendelkezésre állnak olvasható adatok.

Példakód:

EthernetClient client = server.available();

 

server.write()

Adatokat küld a szerverhez kapcsolódott klienseknek. Az adat bájt vagy karakter típusú lehet.

 

server.print()

ASCII kódolású adatokat küld a szerverhez kapcsolódott klienseknek. A server.println() az adatot kiegészíti a soremelés kódjával.

Szintaxisa:

server.print(data),

server.println(data, BASE).

Paraméterei:

data: char, byte, int, long, string, amit a szervernek ki kell küldenie,

BASE: a számrendszer alapja BIN, HEX, OCT, DEC.

  

Arduino kód: 66server

 

Client osztály

EthernetClient()

Létrehoz egy klienst, ami egy IP-címen meghatározott porthoz képes csatlakozni.

 

If(ethernetClient)

Megvizsgálja, hogy a kliens készen áll-e. Bool típusú változóban adja vissza a választ.

 

client.connected()

Megvizsgálja, hogy a kliens kapcsolatban van-e. Amíg van olvasatlan adat, addig igen.

 

client.connect()

A meghatározott címre és portra kapcsolja a klienst, ha sikerült, IGAZ választ ad vissza.

 

client.write()

Adatot küld a szervernek, amelyikhez a kliens kapcsolódott.

 

client.print() és client.println()

ASCII kódolású adatokat küld a szervernek.

 

client.available()

Visszaadja a szerver által küldött, olvasásra kész bájtok számát.

 

client.read()

Beolvassa a szerver által küldött utolsó bájtot.

 

client.flush()

Kiüríti az átmeneti tárolót, minden olvasatlan bájtot töröl.

 

client.stop()

Megszakítja a kapcsolatot a szerverrel.

 

Arduino kód: 67client

 

EthernetUDP osztály

Az UDP (User Datagram Protocoll) az internetet alkotó protokollok egyike, amivel számítógép-alkalmazások cserélnek úgynevezett datagrammokat egymás között. Leginkább olyan esetekben érdemes használni, amikor nem fontos a hibaellenőrzés és -javítás a csomagok átvitelekor. Ez általában valós idejű adatátviteli rendszereknél fontos, ahol egy csomag elvesztése kisebb probléma, mint az ellenőrzésekből fakadó késés.

 

UDP.begin()

Inicializálja az UDP könyvtárat és hálózati beállításait.

Szintaxisa:

EthernetUDP.begin(localPort); 

Paraméterei:

localPort: helyi port száma

 

UDP.read()

Datagrammot olvas egy meghatározott tárolóból. Argumentumok nélkül a soron következő karaktert adja vissza.

Szintaxisa:

UDP.read(packetBuffer, MaxSize).

Paraméterei:

packetBuffer: az átmeneti tároló, ami a bejövő karaktereket tárolja,

MaxSize: az átmeneti tároló maximális mérete.

 

UDP.write()

Datagrammot ír egy távoli kapcsolatnak. beginPacket() és endPacket() között kell használni. Az elküldött karakterek számát adja vissza.

Szintaxisa:

UDP.write(message); 

Paraméterei:

message: kimenő üzenet (char adattípus)

 

UDP.beginPacket()

Inicializálja a datagramm elküldését. A küldendő adatokat a write()-tal határozzuk meg.

Szintaxisa:

UDP.beginPacket(remoteIP, remotePort);

Paraméterei:

remoteIP: a távoli kapcsolat IP címe (4 byte)

remotePort: a távoli kapcsolat port száma (int)

 

UDP.endPacket()

Jóváhagyja a datagramm továbbítását. 

Szintaxisa:

UDP.endPacket();  

Paraméterei:

nincs

 

UDP.parsePacket()

Megvizsgálja, van-e elérhető datagramm, és ha van, visszaadja a méretét. Read() előtt kell használni.

Szintaxisa:

UDP.parsePacket();  

Paraméterei:

nincs

 

UDP.available()

Az átmeneti tárolóba már megérkezett bájtok (karakterek) számát adja vissza. A parsePacket() után érdemes használni. 

Szintaxisa:

UDP.available(); 

Paraméterei:

nincs

  

UDP.remoteIP()

Visszaadja a távoli kapcsolat IP-címét. A parsePacket() után kell használni.

Szintaxisa:

UDP.remoteIP();  

Paraméterei:

nincs

 

UDP.remotePort()

Visszaadja a távoli kapcsolat portjának számát. A parsePacket() után kell használni. 

Szintaxisa:

UDP.remotePort(); 

Paraméterei:

nincs

 

Arduino kód: 68UDP

 

- - - - - - - - - -

forrás: http://arduino.cc/en/Tutorial/HomePagehttp://arduino.cc/en/reference/ethernet

 

 

 

Szólj hozzá!

Címkék: leckék könyvtárak Ethernet lektorált

A bejegyzés trackback címe:

https://harsanyireka.blog.hu/api/trackback/id/tr856398733

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása