Sériová komunikácia so spracovaním

Sériová komunikácia so spracovaním

Sériová komunikácia so spracovaním

Sériová trieda

Operácie na použitie sériovej komunikácie spracovanie sú definované v triede Serial.Prvá operácia vykonaná na ich použitie v programe (skica) bude začleniť ho do kódu s import processing.serial.*;.

Obsah

    Trieda Serial Má päť rôznych konštruktorov v závislosti od uvedených parametrov. Jediným povinným parametrom je nadradený objekt (rodič), ktorý zvyčajne zodpovedá hlavnému programu (povedzme oknu programu) triedy PApplet. Ako zvyčajne bude rodičom program, ktorý sa píše ( skica prúd), hodnota tohto prvého povinného parametra bude this.

    Ďalších päť parametrov, ktoré možno odovzdať konštruktorovi, sú ① rýchlosť, ② názov sériového portu ③ parita použité v protokole, ④ dátové bity a ⑤ stop bity. Najčastejšie odovzdávanými parametrami, okrem požadovaného rodičovského objektu, sú názov portu a rýchlosť.

    La rýchlosť sériovej komunikácie je celé číslo (int) predvolená hodnota je 9600 ak sa tento parameter neodovzdá konštruktorovi.

    K dispozícii sú sériové porty. Metóda zoznamu

    El názov portu má formu určenú systémom, týmto spôsobom napríklad v Linuxové distribúcie bude to niečo podobné /dev/ttyS4 / dev / ttyACM3 o /dev/ttyUSB1 (v závislosti od typu portu), zatiaľ čo na Windowse to bude niečo ako COM12. Ak nie je port fyzicky spojený so zariadením, program zvyčajne nevie, ktorý port má použiť. Bežným spôsobom výberu portu je získať zoznam dostupných portov, ukázať ho používateľovi a umožniť mu vybrať si ten, ktorý chce použiť. Metóda Serial.list() vráti vektor textových reťazcov (String) s názvami portov dostupných v systéme.

    Port, ktorý knižnica štandardne používa Serial je prvý z tých, ktoré metóda vráti list (určite COM1 na Windows alebo /dev/ttyS0 en GNU / Linux). S výnimkou veľmi obmedzených kontextov, v ktorých je hardvér, s ktorým sa pracuje, presne známy (napríklad systém v režime kiosku), sa zvyčajne nevynecháva a cieľový port je výslovne uvedený.

    Spracováva sa sériový Linux Port sériového zoznamu ttyACM ttyS ttyUSB

    Snímka obrazovky vyššie zobrazuje výstup systému GNU / Linux ktorý má štyri sériové porty RS-232 (ttyS0 a ttyS3) a päť adaptérov dvoch typov (ttyACM0 a ttyACM1 y ttyUSB0 a ttyUSB2).

    Povolenia sériových zariadení Linux ttyACM ttyS ttyUSB

    Na prístup k sériovým portom musí používateľ normálne patriť do skupiny, do ktorej ich systém priradí tty o vytočiť. Na snímke obrazovky vyššie môžete vidieť, že sériové porty sú uvedené s ls /dev/tty[ASU]* -la patria do skupiny vytočiť ktorý má na nich prístupové oprávnenia na čítanie a zápis.

    Parametre sériového protokolu

    La parita sériovej komunikácie je vyjadrené v spracovanie ako postava (char), ktorý môže nadobúdať hodnoty: ① N (nikto), aby ste nezistili parita, ② E (i) na označenie toho paritný bit je párne, ③ O (nepárny) na označenie toho paritný bit je nepárne, ④ M (značka) vždy urobiť paritný bit a ⑤ S (priestor), aby sa vždy jedna paritný bit. Predvolená hodnota, ak nie je odovzdaná konštruktorovi ako parameter, je N (bez parita).

    Počet dátové bity, čo je štandardne osem, označuje počet bitov, ktoré tvoria čisté dátové zaťaženie (nazývané znak alebo niekedy slovo), ktoré sa prenáša v každej základnej jednotke rámca. Parameter označujúci počet dátových bitov je vyjadrený ako celé číslo (int).

    Nakoniec piaty možný parameter udáva trvanie výslednej známky, vyjadrené ako stop bity (stop bity), ktoré je označené ako číslo zastúpené v s pohyblivou rádovou čiarkou (float), ktoré môžu nadobudnúť hodnoty 1.0 (predvolená hodnota, ak sa parameter neodovzdá konštruktorovi), 1.5alebo 2.0.

    Konštruktéri triedy Serial

    Nasledujúci zoznam zobrazuje rôzne kombinácie parametrov, ktoré možno odovzdať konštruktorovi triedy Serial:

    • Serial(padre)
    • Serial(padre,puerto)
    • Serial(padre,velocidad)
    • Serial(padre,puerto,velocidad)
    • Serial(padre,puerto,velocidad,paridad,bits_datos,bits_parada)
    Ukončite sériovú komunikáciu. Metóda zastavenia.

    Na uvoľnenie sériového portu priradeného pri vytváraní inštancie Seriala že ho môžu používať iné systémové aplikácie, komunikácia sa ukončí touto metódou stop, ktorý neprijíma parametre.

    Posielajte dáta cez sériový port. Metóda zápisu

    Ak chcete odoslať údaje, trieda Serial de spracovanie zahŕňa metódu write pomocou ktorých je možné prenášať ① textové reťazce (String), ② bajtov alebo ③ bajtových vektorov (byte[]). Je zaujímavé si to pripomenúť byte en spracovanie (Na Jáva) predstavuje celé číslo medzi -128 a 127 a reťazce štandardne používajú kódovanie utf-16.

    Čítanie údajov zo sériového portu

    Aby mohol program vykonávať iné úlohy, kým sú dáta prijímané cez sériový port, je obvyklé ukladať do a nárazník údaje, ktoré prichádzajú, a v prípade potreby ich prečítajte. Aj keď to zvyčajne nie je príliš efektívne, môžete aplikáciu zastaviť a načítať všetky dostupné údaje; Najbežnejšou vecou však bude čítanie informácií tak, ako prichádzajú, a to buď v každej iterácii draw, keď je k dispozícii určité množstvo alebo bol prijatý špeciálny kód.

    Množstvo údajov dostupných vo vyrovnávacej pamäti. Dostupná metóda

    Ak chcete vedieť, či údaje prišli nárazník séria, metóda available vráti počet bajtov, ktoré už boli v ňom uložené nárazník. V oboch prípadoch môžu operácie čítania vrátiť špeciálnu hodnotu (ako napr -1 o null) pri pokuse o načítanie údajov z nárazník séria, keď je prázdna.

    Načítajte jeden bajt naraz. Metóda čítania

    Hlavné metódy triedy Serial ktoré slúžia na čítanie informácií prijatých sériovým portom sú typu „ read» ktoré sa medzi sebou líšia najmä typom údajov, v ktorých doručujú prijaté informácie.

    read sa používa na doručenie bajtov prijatých sériovým portom ako hodnoty medzi 0 a 255. Ako typ údajov byte de spracovanie predstavuje rozsah medzi -128 a 127 a nie medzi 0 a 255, je potrebné použiť int aby reprezentoval rozsah vrátený read. Ak sa pokúsite čítať s read a nárazník reťazec je prázdny, vráti hodnotu -1

    Čítajte znaky zo sériového portu. Metóda readChar

    Metóda readChar je podobný read ale vráti hodnotu vo formáte char namiesto a int. Rovnako ako interne, char en spracovanie (Na Jáva) sú uložené s dvomi bajtmi, pričom hodnota, ktorá sa má vrátiť pri čítaní s readChar О nárazník je prázdna séria 0xFFFF o -1.

    Načítať textový reťazec. Metódy readString a readStringUntil.

    Metóda readString vráti objekt String vytvorené zo všetkých údajov dostupných v nárazník série v čase konzultácie.

    Metóda readString vytvorí textový reťazec za predpokladu, že bajty prijaté sériovým portom sú vo formáte ASCII takže tento spôsob čítania nemožno použiť pre iné kódovania.

    Ak ide o čítanie nárazník séria s readString keď je prázdny, návratová hodnota je null.

    Metóda readStringUntil pridať k readString schopnosť vrátiť informácie načítané do nárazník séria, ktorá ho rozdeľuje špeciálnym znakom (kódom), ktorý sa odovzdáva ako parameter. Tento spôsob čítania prijatých informácií nám umožňuje rozlíšiť oddeľovače aj terminátory, ktoré pomáhajú interpretovať prijaté informácie.

    Metóda readStringUntil priniesť späť null keď v nárazník séria nenájde kód špecifikovaný v argumente, ktorý jej bol odovzdaný (jeden bajt).

    V nasledujúcom kóde pre Arduino odošle tri správy cez sériový port. Prvé dva končia na karte, takže sa zobrazia v konzole. spracovanie, zatiaľ čo tretí, hoci bude odoslaný cez sériový port, nebude načítaný readStringUntil(9) pretože nekončí na karte (s kódom ASCII 9).

    Spracovanie Serial.readStringAž do prečítania sériového reťazca

    Čítanie blokov údajov. Metódy readBytes a readBytesUntil.

    Vyššie uvedené metódy sa používajú na čítanie údajov so špecifickými formátmi, na čítanie blokov nespracovaných údajov alebo s formátom, ktorý nie je uvedený v spracovanie používajú sa metódy readBytes y readBytesUntil

    Metóda readBytes skúste si prečítať údaje dostupné v nárazník séria. Ak sa do metódy neodovzdá žiadny parameter readBytes všetky dostupné údaje sa načítajú a vrátia vo vektore (byte[]). Ak sa ako parameter odovzdá celé číslo, načíta sa maximálny počet bajtov označený týmto číslom a vrátia sa aj ako vektor.

    Existuje tretí spôsob použitia readBytes, efektívnejšie, ktoré berie ako argument bajtový vektor, do ktorého je obsah nárazník séria. Tento spôsob použitia readBytes vráti celé číslo (int), ktorý predstavuje počet prečítaných bajtov.

    Metóda readBytesUntil funguje podobným spôsobom, ale obsahuje prvý parameter, ktorý predstavuje hodnotu bajtu, ktorý, ak sa nachádza v nárazník, bude indikovať koniec čítania. Pri tejto metóde nedáva parameter, ktorý určuje maximálny počet bajtov, ktoré sa budú čítať, zmysel, pretože množstvo bude určené špeciálnym kódom.

    Na testovanie fungovania metódy readBytes Predpokladajme nasledujúci kód pre Arduino ktorý posiela text cez sériový port.

    Nasledujúci príklad programu pre spracovanie číta text zo sériového portu v 32-bajtových blokoch (TOTAL_BYTES). Aby sa overilo, že funguje, zobrazí ho cez konzolu ako znaky, čím sa vynúti typ prijatých bajtov char.

    Na nasledujúcej snímke obrazovky môžete vidieť, ako sa zobrazujú v konzole spracovanie údaje, ktoré boli načítané v blokoch (maximálne) 32 bajtov (TOTAL_BYTES) vždy. Je tu však problém, o ktorom sa už hovorilo: Arduino posiela verše z Federico García Lorca príkladu zakódovaného ako text vo formáte UTF-8, ktorý nie je použitý spracovanie (Jáva), čomu dávaš prednosť utf-16 takže tí, ktorí nezodpovedajú hodnosti ASCII vytlačiteľné sú nesprávne interpretované.

    Spracovanie Serial.readBytes UTF-16

    Na vyriešenie tohto problému je možné načítať znakové sady (znaková sada) a definujte nový objekt String prinútiť ho reprezentovať kódovaním UTF-8 ako je uvedené v nasledujúcom príklade kódu.

    Spracovanie Serial.readBytes UTF-8

    Prečítajte si najnovšie prijaté údaje. Metódy last a lastChar.

    Zatiaľ čo ostatné metódy čítania („typ read») načítajú informácie o nárazník séria v rovnakom poradí, v akom prišla (FIFO), pri týchto dvoch metódach posledný bajt, ktorý dosiahol nárazník séria. Metóda last vráti hodnotu posledného bajtu ako a int y lastChar vráti hodnotu ako a char.

    Správa sériovej vyrovnávacej pamäte

    Hoci doteraz videné metódy sú dokonale funkčné, nie vždy predstavujú najlepší spôsob, ako využiť prístup k sériovému portu. Aby mohli načítať údaje, musia pravidelne kontrolovať stav nárazník série a prečítajte si údaje dostupné v opakujúcej sa časti kódu. Všeobecne efektívnejší spôsob je čítať údaje len vtedy, keď viete, že sú k dispozícii.

    Čítajte sériový port po prijatí údajov. Seriálové podujatie.

    Pre prístup k nárazník sériový, keď sa prijmú dáta, udalosť Serial sa dá využiť riadením prostredníctvom definície metódy serialEvent. Táto metóda používa ako argument sériový port, ktorý ju spúšťa.

    Veľkosť sériovej vyrovnávacej pamäte. Metóda vyrovnávacej pamäte.

    Ak poznáte počet bajtov, ktoré tvoria blok užitočných údajov, môžete tento štýl čítania údajov ďalej optimalizovať. nárazník cez sériu serialEvent. Metóda buffer umožňuje nastaviť počet bajtov, ktoré budú uložené v nárazník pred spustením sériového podujatia. Metóda očakáva ako parameter celé číslo, ktoré predstavuje počet bajtov.

    Naplňte zásobník, kým sa neobdrží hodnota. Metóda bufferUntil.

    Namiesto nastavenia volania metódy serialEvent pre množstvo údajov v nárazník, s touto metódou bufferUntil môžete nakonfigurovať ukladanie údajov, kým nepríde špeciálna hodnota, a potom vyvolať udalosť Serial. Parameter odovzdaný tejto metóde je a int čo predstavuje hodnotu produkovanú volaním serialEvent.

    Vymažte údaje uložené vo vyrovnávacej pamäti. Jasná metóda.

    S metódou clear Môžete vymazať údaje, ktoré sú momentálne v nárazník. Táto metóda môže byť použitá napríklad na spustenie novej relácie príjmu dát ignorujúc dáta zostávajúce z predchádzajúcej relácie.

    Typická aplikácia na spracovanie údajov na čítanie údajov cez sériový port

    Na záver je vhodné rekapitulovať operácie objektu Serial de spracovanie ktoré sú bežnejšie používané, pričom prechádzajú typickým príkladom príjmu dát cez sériový port, aby sa s nimi nakreslil graf, v tomto prípade naskladaných oblastí.

    Importujte sériovú knižnicu

    Určite dátový protokol (oddeľovače)

    Určite objekt triedy Serial

    Vytvorte inštanciu objektu triedy Serial nastavením použitého sériového portu

    Nakonfigurujte vyrovnávaciu pamäť sériového portu

    Implementujte obsluhu pre udalosť seriálu

    Prečítajte si sériovú vyrovnávaciu pamäť

    Upravte prijaté údaje

    Ukončite sériovú komunikáciu

    Príklad kódu nižšie ilustruje toto zhrnutie s funkčnou (hoci veľmi jednoduchou) aplikáciou, ktorá generuje plošný graf s hodnotami, ktoré sa prijímajú cez sériový port, niečo podobné tomu, čo ukazuje nasledujúca animácia.

    grafika so Spracovaním s údajmi prijatými cez sériový port

    Aby ste sa nestratili vo zvyšku programu a zamerali pozornosť na sériovú komunikáciu s spracovanie, sú zvýraznené riadky kódu, ktoré zodpovedajú predchádzajúcim operáciám.

    Pridať komentár

    Možno ste zmeškali