Jadaside töötlemisega

Jadaside töötlemisega

Jadaside töötlemisega

Seeriaklass

Jadaside kasutamise toimingud Töötlemine on klassis määratletud Serial.Esimene tehing nende kasutamiseks programmis (eskiis) on lisada see koodi import processing.serial.*;.

Sisukord

    Klass Serial Sellel on viis erinevat konstruktorit, sõltuvalt näidatud parameetritest. Ainus nõutav parameeter on põhiobjekt (vanem), mis tavaliselt vastab klassi põhiprogrammile (näiteks programmi aknale). PApplet. Nagu tavaliselt, on kirjutatav programm vanem ( eskiis praegune), on selle esimese kohustusliku parameetri väärtus this.

    Ülejäänud viis parameetrit, mida saab konstruktorile edastada, on ① kiirus, ② jadapordi nimi ③ pariteet protokollis kasutatavad ④ andmebitid ja ⑤ stoppbitid. Kõige sagedamini edastatavad parameetrid, lisaks nõutavale põhiobjektile, on pordi nimi ja kiirus.

    La jadaside kiirus on täisarv (int) See vaikeväärtus on 9600 kui seda parameetrit konstruktorile ei edastata.

    Saadaval jadapordid. Loendi meetod

    El sadama nimi on süsteemi poolt määratud kujul sellisel viisil, näiteks sisse Linuxi distributsioonid see saab olema midagi sellist /dev/ttyS4 / dev / ttyACM3 o /dev/ttyUSB1 (olenevalt pordi tüübist), samas kui Windowsis on see midagi sarnast COM12. Kui port pole seadmega füüsiliselt seotud, ei tea programm tavaliselt, millist porti kasutada. Levinud viis pordi valimiseks on hankida saadaolevate portide loend, näidata seda kasutajale ja lubada tal valida see, mida nad soovivad kasutada. Meetod Serial.list() tagastab tekstistringide vektori (String) süsteemis saadaolevate portide nimedega.

    Port, mida teegi kasutab vaikimisi Serial on esimene meetodiga tagastatutest list (kindlasti COM1 Windowsis või /dev/ttyS0 en GNU / Linux). Välja arvatud väga piiratud kontekstides, kus töötav riistvara on rangelt teada (nt süsteem kioskirežiimis), ei jäeta seda tavaliselt välja ja sihtport on selgelt märgitud.

    Töötletakse jada Linuxi jadaliendi porti ttyACM ttyS ttyUSB

    Ülaltoodud ekraanipilt näitab süsteemi väljundit GNU / Linux millel on neli jadaporti RS-232 (ttyS0 a ttyS3) ja viis kahte tüüpi adapterit (ttyACM0 a ttyACM1 y ttyUSB0 a ttyUSB2).

    Linuxi jadaseadmete load ttyACM ttyS ttyUSB

    Jadaportidele juurdepääsuks peab kasutaja kuuluma gruppi, kuhu süsteem need määrab, tavaliselt tty o sissehelistamine. Ülaltoodud pildi ekraanipildil näete, et jadapordid on loetletud koos ls /dev/tty[ASU]* -la kuuluvad rühma sissehelistamine millel on nende lugemis- ja kirjutamisõigused.

    Jadaprotokolli parameetrid

    La pariteet jadaside väljendatakse Töötlemine tegelasena (char), mis võib võtta järgmised väärtused: ① N (mitte ükski), et mitte tuvastada pariteet, ② E (isegi), et näidata, et pariteedi bitt on paaris, ③ O (imelik), et näidata, et pariteedi bitt on paaritu, ④ M (märk), et alati teha pariteedi bitt ja ⑤ S (ruum), et alati üks neist teha pariteedi bitt. Vaikeväärtus, kui seda ei edastata konstruktorile parameetrina, on N (ilma pariteet).

    Arv andmebitid, mis on vaikimisi kaheksa, näitab bittide arvu, mis moodustavad netoandmekoormuse (mida nimetatakse märgiks või mõnikord sõnaks), mis edastatakse kaadri igas põhiühikus. Andmebittide arvu näitav parameeter väljendatakse täisarvuna (int).

    Lõpuks näitab viies võimalik parameeter lõpliku hinde kestust, väljendatuna stop bitid (stop bitid), mis on näidatud numbrina, mis on esitatud ujukoma (float), mis võib võtta väärtused 1.0 (vaikeväärtus, kui parameetrit konstruktorile ei edastata), 1.5või 2.0.

    Serial klassi konstruktorid

    Järgmine loend näitab erinevaid parameetrite kombinatsioone, mida saab klassi konstruktorile edastada Serial:

    • Serial(padre)
    • Serial(padre,puerto)
    • Serial(padre,velocidad)
    • Serial(padre,puerto,velocidad)
    • Serial(padre,puerto,velocidad,paridad,bits_datos,bits_parada)
    Lõpetage jadaside. Peatusmeetod.

    Instantimisel määratud jadapordi vabastamiseks Serial, ja et teised süsteemirakendused saavad seda kasutada, lõpetatakse side meetodiga stop, mis ei saa parameetreid.

    Andmete saatmine jadapordi kaudu. Kirjutamismeetod

    Andmete saatmiseks klass Serial de Töötlemine hõlmab meetodit write millega saate edastada ① tekstistringe (String), ② baiti või ③ baiti vektoreid (byte[]). Seda on huvitav meenutada byte en Töötlemine (Praegu Java) tähistab täisarvu vahemikus -128 kuni 127 ja vaikimisi kasutavad stringid kodeeringut UTF-16.

    Andmete lugemine jadapordist

    Et programm saaks jadapordi kaudu andmete vastuvõtmise ajal täita muid toiminguid, salvestatakse tavaliselt a puhver saabuvad andmed ja vajadusel lugege need läbi. Kuigi tavaliselt ei ole see väga tõhus, saate rakenduse peatada, et laadida kõik saadaolevad andmed; Kõige tavalisem on aga teabe lugemine selle saabumisel kas igas iteratsioonis draw, kui teatud kogus on saadaval või on saadud erikood.

    Puhvris saadaolevate andmete hulk. Olemasolev meetod

    Et teada saada, kas andmed on saabunud puhver seeria, meetod available tagastab sellesse juba salvestatud baitide arvu puhver. Mõlemal juhul võivad lugemistoimingud tagastada spetsiaalse väärtuse (nt -1 o null), kui proovite laadida andmeid puhver seeria kui tühi.

    Laadige üks bait korraga. Lugemise meetod

    Klassi peamised meetodid Serial jadapordi poolt vastuvõetud teabe lugemiseks on "tüüpi read» mis erinevad nende vahel peamiselt selle poolest, millist tüüpi andmeid nad saadud teabe edastavad.

    read kasutatakse jadapordi poolt vastuvõetud baitide edastamiseks väärtusena vahemikus 0 kuni 255. Andmetüübina byte de Töötlemine tähistab vahemikku -128 ja 127, mitte 0 ja 255 vahel, on vaja kasutada int tagastatud vahemiku esitamiseks read. Kui proovite lugeda koos read ja puhver string on tühi, tagastab väärtuse -1

    Loe tähemärke jadapordist. ReadChar meetod

    Meetod readChar See on sarnane read kuid see tagastab väärtuse vormingus char a asemel int. Nagu sisemiselt, char en Töötlemine (Praegu Java) salvestatakse kahe baidiga, mille väärtus valitakse lugemisel tagastamiseks readChar poolt puhver tühi seeria on 0xFFFF o -1.

    Laadige tekstistring. Meetodid readString ja readStringUntil.

    Meetod readString tagastab objekti String moodustatud kõigist saadavalolevatest andmetest puhver seeriaga konsulteerimise ajal.

    Meetod readString loob tekstistringi, eeldades, et jadapordi poolt vastuvõetud baidid on vormingus ASCII nii et seda lugemismeetodit ei saa kasutada muude kodeeringute jaoks.

    Kui jutt on lugemisest puhver seeria koos readString kui tühi, on tagastusväärtus null.

    Meetod readStringUntil Lisa readString võime tagastada seadmesse laaditud teavet puhver seeria, mis jagab selle parameetrina edastatava erimärgi (koodi) abil. Selline saadud teabe lugemise viis võimaldab meil eristada nii eraldajaid kui ka terminaatoreid, mis aitavad saadud teavet tõlgendada.

    Meetod readStringUntil tagasi tooma null kui sees puhver seeria ei leia talle edastatud argumendis määratud koodi (üks bait).

    Järgmises koodis Arduino saadab jadapordi kaudu kolm teadet. Kaks esimest lõpevad vahekaardiga, nii et need kuvatakse konsoolis. Töötlemine, samas kui kolmandat, kuigi see saadetakse jadapordi kaudu, ei loeta readStringUntil(9) kuna see ei lõpe vahekaardiga (koos koodiga ASCII 9).

    Töötlemine Serial.readStringKuni jadastringi lugemiseni

    Andmeplokkide lugemine. Meetodid readBytes ja readBytesUntil.

    Ülaltoodud meetodeid kasutatakse andmete lugemiseks kindlas vormingus, toorandmete plokkide lugemiseks või vormingus, mis ei ole sätestatud Töötlemine meetodeid kasutatakse readBytes y readBytesUntil

    Meetod readBytes proovige lugeda saadaolevaid andmeid puhver seeria. Kui meetodile ei edastata ühtegi parameetrit readBytes kõik saadaolevad andmed loetakse ja tagastatakse vektoris (byte[]). Kui parameetrina edastatakse täisarv, loetakse maksimaalselt selle numbriga näidatud baitide arv ja need tagastatakse ka vektorina.

    Kasutamiseks on kolmas viis readBytes, tõhusam, mis võtab argumendina baitvektori, millesse sisu sisestatakse puhver seeria. See kasutusviis readBytes tagastab täisarvu (int), mis tähistab loetud baitide arvu.

    Meetod readBytesUntil töötab sarnaselt, kuid sisaldab esimest parameetrit, mis tähistab selle baidi väärtust, mis, kui see leitakse failis puhver, näitab lugemise lõppu. Selle meetodi puhul pole parameetril, mis määrab loetavate baitide maksimaalse arvu, mõtet, kuna summa määratakse spetsiaalse koodiga.

    Meetodi toimimise testimiseks readBytes Oletame, et järgmine kood Arduino mis saadab jadapordi kaudu teksti.

    Järgmine näidisprogramm Töötlemine loeb jadapordist teksti 32-baidiste plokkidena (TOTAL_BYTES). Selle toimimise kontrollimiseks näitab see seda konsooli kaudu märkidena, sundides vastuvõetud baitide tüübi char.

    Järgmisel ekraanipildil näete, kuidas neid konsoolis kuvatakse Töötlemine andmed, mis on laaditud plokkides (maksimaalselt) 32 baiti (TOTAL_BYTES) iga kord. Kuid on probleem, millest on juba räägitud: Arduino on saatnud värsse Federico Garcia Lorca vormingus tekstina kodeeritud näitest UTF-8, mida ei kasutata Töötlemine (Java), mida te eelistate UTF-16 nii need, kes ei vasta auastmele ASCII prinditavad on valesti tõlgendatud.

    Serial.readBytes UTF-16 töötlemine

    Selle probleemi lahendamiseks saab laadida märgistikke (tähemärk) ja määrake uus objekt String sundides seda esitama kodeeringuga UTF-8 nagu on näidatud järgmises näidiskoodis.

    Serial.readBytes UTF-8 töötlemine

    Lugege viimaseid saadud andmeid. Viimane ja viimane Chari meetod.

    Kuigi ülejäänud lugemismeetodid (tüüp read») nad laadivad teabe puhver seeria saabumise järjekorras (FIFO), nende kahe meetodiga viimane bait, mis on jõudnud puhver seeria. Meetod last tagastab viimase baidi väärtuse kui a int y lastChar tagastab väärtuse kui a char.

    Jadapuhvri haldus

    Kuigi seni nähtud meetodid on täiesti funktsionaalsed, ei ole need alati parim viis jadapordile juurdepääsu ärakasutamiseks. Andmete laadimiseks peavad nad perioodiliselt kontrollima nende olekut puhver seeriat ja lugege koodi korduvas osas saadaolevaid andmeid. Üldiselt tõhusam viis on lugeda andmeid ainult siis, kui teate, et need on saadaval.

    Andmete vastuvõtmisel lugege jadaporti. Sariüritus.

    Et pääseda juurde puhver jada, kui andmed vastu võetakse, saab jadasündmust ära kasutada, haldades seda meetodi määratluse kaudu serialEvent. See meetod kasutab argumendina jadaporti, mis selle käivitab.

    Määrake jadapuhvri suurus. Puhvermeetod.

    Kui teate kasulike andmete ploki moodustavate baitide arvu, saate seda andmete lugemise stiili veelgi optimeerida. puhver seeria läbi serialEvent. Meetod buffer võimaldab määrata baitide arvu, mis salvestatakse puhver enne seeriaürituse käivitamist. Meetod eeldab parameetrina täisarvu, mis tähistab baitide arvu.

    Täitke puhver kuni väärtuse saamiseni. BufferUntil meetod.

    Selle asemel, et määrata meetodi kutse serialEvent teatud hulga andmete jaoks puhver, meetodiga bufferUntil saate konfigureerida andmeid salvestama kuni eriväärtuse saabumiseni ja seejärel tõsta seeriasündmust. Sellele meetodile edastatud parameeter on a int mis esindab väärtust, mida kõne tekitab serialEvent.

    Kustutage puhvrisse salvestatud andmed. Selge meetod.

    Meetodiga clear Saate kustutada andmed, mis praegu on puhver. Seda meetodit saab kasutada näiteks uue andmete vastuvõtuseansi alustamiseks, ignoreerides eelmisest allesjäänud andmeid.

    Tüüpiline töötlemisrakendus andmete lugemiseks jadapordi kaudu

    Lõpuks on mugav kokku võtta objekti toimingud Serial de Töötlemine mida sagedamini kasutatakse, läbides tüüpilise näite andmete vastuvõtmisest läbi jadapordi, et joonistada nendega graafik, antud juhul virnastatud alade puhul.

    Importige jadateek

    Määrake andmeprotokoll (eraldajad)

    Määrake jadaklassi objekt

    Looge jadaklassi objekt, määrates kasutatava jadapordi

    Konfigureerige jadapordi puhver

    Rakendage seeriasündmuse käitleja

    Lugege jadapuhvrit

    Konditsioneerige saadud andmed

    Lõpetage jadaside

    Allolev näitekood illustreerib seda kokkuvõtet funktsionaalse (kuigi väga lihtsa) rakendusega, mis genereerib jadapordi kaudu vastuvõetavate väärtustega pindalagraafiku, mis sarnaneb järgmise animatsiooniga.

    graafika jadapordi kaudu saadud andmetega töötlemine

    Et mitte eksida ülejäänud programmis ja keskenduda jadasuhtlusele Töötlemine, on eelmistele toimingutele vastavad koodiread esile tõstetud.

    Postita kommentaar

    Võib-olla jäite vahele