Soros kommunikáció feldolgozással

Soros kommunikáció feldolgozással

Soros kommunikáció feldolgozással

A soros osztály

A soros kommunikáció használatához szükséges műveletek Feldolgozás osztályban vannak meghatározva Serial.Az első művelet a programban való használatukhoz (vázlat) az lesz, hogy beépítsük a kódba import processing.serial.*;.

Tartalomjegyzék

    Osztály Serial Öt különböző konstruktorral rendelkezik a megadott paraméterektől függően. Az egyetlen kötelező paraméter a szülőobjektum (szülő), amely általában az osztály fő programjának (mondjuk a programablaknak) felel meg PApplet. Mint általában, a szülő lesz az írandó program (a vázlat áram), ennek az első kötelező paraméternek az értéke lesz this.

    A másik öt paraméter, amely átadható a konstruktornak: ① a sebesség, ② a soros port neve ③ a paritás a protokollban használt ④ adatbitek és ⑤ stop bitek. A leggyakrabban átadott paraméterek a szükséges szülőobjektum mellett a portnév és a sebesség.

    La soros kommunikációs sebesség egy egész szám (int), amely alapértelmezett értéke 9600 ha ezt a paramétert nem adjuk át a konstruktornak.

    Soros portok állnak rendelkezésre. A lista módszere

    El port neve a rendszer által meghatározott formája van, ilyen módon, például in Linux disztribúciók valami ilyesmi lesz /dev/ttyS4 / dev / ttyACM3 o /dev/ttyUSB1 (port típusától függően), míg Windowson valami ilyesmi lesz COM12. Hacsak egy port nincs fizikailag társítva egy eszközhöz, a program általában nem tudja, melyik portot használja. A port kiválasztásának gyakori módja az elérhető portok listájának beszerzése, megmutatása a felhasználónak, és lehetővé téve, hogy kiválassza a használni kívánt portot. A módszer Serial.list() szöveges karakterláncok vektorát adja vissza (String) a rendszeren elérhető portok nevével.

    A könyvtár által alapértelmezés szerint használt port Serial a metódus által visszaadottak közül az első list (biztosan COM1 Windows vagy /dev/ttyS0 en GNU / Linux). Azon nagyon korlátozott kontextusok kivételével, amelyekben a dolgozott hardver szigorúan ismert (például kioszk módban lévő rendszer), általában nem hagyják ki, és a célportot kifejezetten feltüntetik.

    Soros Linux feldolgozása Soros lista port ttyACM ttyS ttyUSB

    A fenti képernyőképen egy rendszer kimenete látható GNU / Linux amelynek négy soros portja van RS-232 (ttyS0 a ttyS3) és öt kétféle adapter (ttyACM0 a ttyACM1 y ttyUSB0 a ttyUSB2).

    Linux soros eszközök engedélyei ttyACM ttyS ttyUSB

    A soros portok eléréséhez a felhasználónak abba a csoportba kell tartoznia, amelyhez a rendszer hozzárendeli őket, általában tty o tárcsázás. A fenti kép képernyőképen látható, hogy a soros portok listája a következővel: ls /dev/tty[ASU]* -la csoporthoz tartoznak tárcsázás amely olvasási és írási hozzáférési jogosultsággal rendelkezik rajtuk.

    Soros protokoll paraméterei

    La paritás soros kommunikáció - ban kifejezve Feldolgozás mint karakter (char), amely a következő értékeket veheti fel: ① N (egyik sem), hogy ne észlelje a paritás, ② E (még), jelezve, hogy a paritás bit páros, ③ O (páratlan), jelezve, hogy a paritás bit páratlan, ④ M (jel), hogy mindig a paritás bit és ⑤ S (hely), hogy mindig az egyik a paritás bit. Az alapértelmezett érték, ha nem adjuk át paraméterként a konstruktornak, az N (nélkül paritás).

    Száma adatbitek, amely alapértelmezés szerint nyolc, a keret egyes alapegységeiben továbbított nettó adatterhelést alkotó bitek számát jelzi (amelyet karakternek vagy néha szónak neveznek). Az adatbitek számát jelző paraméter egész számként van kifejezve (int).

    Végül az ötödik lehetséges paraméter a végső jegy időtartamát jelzi, kifejezve stop bitek (stop bitek), amely számként van jelölve lebegőpont (float), amely felveheti az értékeket 1.0 (az alapértelmezett érték, ha a paramétert nem adjuk át a konstruktornak), 1.5egy 2.0.

    A Serial osztály konstruktőrei

    A következő lista az osztálykonstruktornak átadható paraméterek különböző kombinációit mutatja be Serial:

    • Serial(padre)
    • Serial(padre,puerto)
    • Serial(padre,velocidad)
    • Serial(padre,puerto,velocidad)
    • Serial(padre,puerto,velocidad,paridad,bits_datos,bits_parada)
    Soros kommunikáció befejezése. A stop módszer.

    A példányosításkor hozzárendelt soros port felszabadítása Serial, és hogy más rendszeralkalmazások is használhatják, a kommunikáció megszakad a metódussal stop, amely nem kap paramétereket.

    Adatok küldése a soros porton keresztül. Az írás.módszer

    Adatküldéshez az osztály Serial de Feldolgozás magában foglalja a módszert write amellyel ① szöveges karakterláncokat küldhet (String), ② bájt vagy ③ bájt vektorok (byte[]). Érdekes erre emlékezni byte en Feldolgozás (A Jáva) egy -128 és 127 közötti egész számot jelöl, és alapértelmezés szerint a karakterláncok a kódolást használják UTF-16.

    Adatok olvasása a soros portról

    Annak érdekében, hogy a program más feladatokat is el tudjon végezni, miközben a soros porton keresztül adat érkezik, általában a ütköző a beérkező adatokat, és szükség esetén olvassa el. Bár általában nem túl hatékony, leállíthatja az alkalmazást az összes rendelkezésre álló adat betöltéséhez; A legáltalánosabb azonban az lesz, hogy az információt beérkezésükkor olvassuk, akár minden iterációban draw, ha egy bizonyos mennyiség elérhető, vagy speciális kód érkezett.

    A pufferben elérhető adatok mennyisége. Az elérhető módszer

    Hogy megtudja, megérkeztek-e adatok ütköző sorozat, a módszer available az ebben már tárolt bájtok számát adja vissza ütköző. Mindkét esetben az olvasási műveletek visszaadhatnak egy speciális értéket (pl -1 o null), amikor adatokat próbál betölteni innen ütköző sorozat üresen.

    Egyszerre egy bájt betöltése. Az olvasási módszer

    Az osztály főbb módszerei Serial amelyek a soros porton keresztül fogadott információk olvasására szolgálnak, a "típusú read» amelyek elsősorban az adattípusban különböznek egymástól, amelyekben a kapott információt továbbítják.

    read A soros port által kapott bájtok 0 és 255 közötti értékként történő kézbesítésére szolgál. Adattípusként byte de Feldolgozás a -128 és 127 közötti tartományt jelenti, és nem a 0 és 255 közötti tartományt, akkor egy int által visszaadott tartomány reprezentálásához read. Ha azzal próbálsz olvasni read és ütköző string üres, értéket ad vissza -1

    Karakterek olvasása a soros portról. A readChar metódus

    A módszer readChar hasonló a read de formátumban ad vissza értéket char a helyett int. Mint belsőleg, a char en Feldolgozás (A Jáva). readChar a ütköző üres sorozat 0xFFFF o -1.

    Töltsön be egy szöveges karakterláncot. A readString és a readStringUntil metódusok.

    A módszer readString objektumot ad vissza String a rendelkezésre álló összes adatból alakult ki ütköző sorozat a konzultáció időpontjában.

    A módszer readString létrehozza a szöveges karakterláncot, feltételezve, hogy a soros port által fogadott bájtok formátumban vannak ASCII így ez az olvasási módszer nem használható más kódolásokhoz.

    Ha arról van szó, hogy elolvassa a ütköző sorozattal readString üresen a visszatérési érték null.

    A módszer readStringUntil add hozzá readString az a képesség, hogy visszaadja a betöltött információkat ütköző sorozat, amely egy paraméterként átadott speciális karakterrel (kóddal) osztja fel. A kapott információ olvasásának ez a módja lehetővé teszi, hogy megkülönböztetjük az elválasztókat és a terminátorokat, amelyek segítik a kapott információ értelmezését.

    A módszer readStringUntil Hozd vissza null amikor a ütköző sorozat nem találja a neki átadott argumentumban megadott kódot (egy bájt).

    A következő kódban a Arduino három üzenetet küld a soros porton keresztül. Az első kettő egy lapon végződik, így megjelennek a konzolon. Feldolgozás, míg a harmadik, bár a soros porton keresztül kerül elküldésre, nem kerül beolvasásra readStringUntil(9) mivel nem tabulátorra végződik (kóddal ASCII 9).

    A Serial.readString feldolgozása a soros karakterlánc beolvasásáig

    Adatblokkok olvasása. A readBytes és readBytesUntil metódusok.

    A fent látható módszereket arra használják, hogy meghatározott formátumú adatokat, nyers adatblokkokat vagy olyan formátumot olvassanak, amelyet nem ír elő Feldolgozás módszereket alkalmaznak readBytes y readBytesUntil

    A módszer readBytes próbálja meg elolvasni a rendelkezésre álló adatokat ütköző sorozat. Ha nem adunk át paramétert a metódusnak readBytes minden elérhető adat beolvasásra és visszaadásra kerül egy vektorban (byte[]). Ha egy egész számot adunk át paraméterként, akkor legfeljebb az ezzel a számmal jelzett bájtok számát olvassuk be, és azokat vektorként is visszaadjuk.

    Van egy harmadik felhasználási mód is readBytes, hatékonyabb, ami argumentumként vesz egy bájtvektort, amelybe a tartalma a ütköző sorozat. Ez a felhasználási mód readBytes egész számot ad vissza (int), amely a beolvasott bájtok számát jelenti.

    A módszer readBytesUntil hasonló módon működik, de tartalmaz egy első paramétert, amely annak a bájtnak az értékét jelenti, amely, ha megtalálható a ütköző, jelzi az olvasás végét. Ebben a módszerben nincs értelme annak a paraméternek, amely meghatározza a beolvasandó bájtok maximális számát, mivel a mennyiséget a speciális kód határozza meg.

    A módszer működésének tesztelésére readBytes Tegyük fel a következő kódot Arduino amely szöveget küld a soros porton keresztül.

    Az alábbi példaprogram a Feldolgozás szöveget olvas be a soros portról 32 bájtos blokkokban (TOTAL_BYTES). Annak ellenőrzésére, hogy működik-e, a konzolon keresztül karakterként jeleníti meg, így a kapott bájtok típusát char.

    A következő képernyőképen láthatja, hogyan jelennek meg a konzolon Feldolgozás az adatok, amelyeket (maximum) 32 bájtos blokkokban töltöttek be (TOTAL_BYTES) mindig. De van egy probléma, amiről már volt szó: Arduino verseit küldte Federico García Lorca a példa szövegként kódolva formátumban UTF-8, amely nem a használt Feldolgozás (Jáva), Mit szeretsz jobban UTF-16 tehát akik nem felelnek meg a rangnak a ASCII nyomtatható hibásan értelmezik.

    Serial.readBytes UTF-16 feldolgozása

    A probléma megoldásához a karakterkészletek betölthetők (karakterkészlet), és definiáljon egy új objektumot String kódolással való ábrázolására kényszerítve UTF-8 az alábbi példakód szerint.

    Serial.readBytes UTF-8 feldolgozása

    Olvassa el a legfrissebb kapott adatokat. Az utolsó és lastChar metódus.

    Míg a többi olvasási mód (a "típus read») töltik be a ütköző sorozat ugyanabban a sorrendben, ahogyan megérkezett (FIFO), ezzel a két módszerrel az utolsó bájt, amely elérte a ütköző sorozat. A módszer last az utolsó bájt értékét adja vissza, mint a int y lastChar visszaadja az értéket, mint a char.

    Soros pufferkezelés

    Bár az eddig látott módszerek tökéletesen működőképesek, nem mindig jelentik a legjobb módot a soros porthoz való hozzáférés kihasználására. Az adatok betöltéséhez rendszeresen ellenőrizniük kell az adatok állapotát ütköző sorozatot, és olvassa el a kód ismétlődő részében elérhető adatokat. Általában hatékonyabb módszer, ha csak akkor olvassuk ki az adatokat, ha tudjuk, hogy azok elérhetők.

    Olvassa be a soros portot, amikor adat érkezik. A sorozatos esemény.

    Ahhoz, hogy hozzáférjen a ütköző soros, amikor az adat érkezik, a Serial esemény a metódusdefiníción keresztül történő kezelésével kihasználható serialEvent. Ez a metódus azt a soros portot használja argumentumként, amelyik elindítja.

    Mérje meg a soros puffert. A puffer módszer.

    Ha ismeri a hasznos adatblokkot alkotó bájtok számát, tovább optimalizálhatja az adatok olvasásának ezt a stílusát. ütköző sorozaton keresztül serialEvent. A módszer, a metódus buffer lehetővé teszi a fájlban tárolt bájtok számának beállítását ütköző sorozatos esemény elindítása előtt. A metódus paraméterként egy egész számot vár, amely a bájtok számát jelenti.

    Töltse fel a puffert, amíg meg nem érkezik egy érték. A pufferUntil metódus.

    A metódushívás beállítása helyett serialEvent a ütköző, a módszerrel bufferUntil beállíthatja, hogy az adatokat addig tárolja, amíg egy speciális érték meg nem érkezik, majd emelje fel a Serial eseményt. A metódusnak átadott paraméter a int amely a hívás által termelt értéket képviseli serialEvent.

    Törölje a pufferben tárolt adatokat. Az egyértelmű módszer.

    A módszerrel clear Törölheti az aktuálisan tárolt adatokat ütköző. Ez a módszer használható például új adatfogadási munkamenet indítására, figyelmen kívül hagyva az előzőből megmaradt adatokat.

    Tipikus feldolgozó alkalmazás adatok soros porton keresztüli olvasására

    Végül célszerű összefoglalni az objektum műveleteit Serial de Feldolgozás amelyeket gyakrabban használnak, végigmegyünk egy tipikus példán az adatok soros porton keresztül történő fogadására, hogy grafikont rajzoljunk velük, jelen esetben halmozott területekről.

    Importálja a soros könyvtárat

    Az adatprotokoll (elválasztók) meghatározása

    Határozza meg a Serial osztály objektumát

    Példányosítsa a Serial class objektumot a használt soros port beállításával

    Konfigurálja a soros port puffert

    Valósítson meg egy kezelőt a soros eseményhez

    Soros puffer olvasása

    Kondicionálja a kapott adatokat

    Soros kommunikáció befejezése

    Az alábbi példakód egy funkcionális (bár nagyon egyszerű) alkalmazással szemlélteti ezt az összefoglalót, amely egy területdiagramot generál a soros porton keresztül kapott értékekkel, valami hasonló ahhoz, amit a következő animáció mutat.

    grafika soros porton keresztül kapott adatokkal

    Annak érdekében, hogy ne vesszen el a program többi részében, és összpontosítsa a figyelmet a sorozatos kommunikációra Feldolgozás, az előző műveleteknek megfelelő kódsorok kiemelve jelennek meg.

    Hozzászólás Comment

    Lehet, hogy lemaradtál