Serial.readBytesUntil()-funktio Arduino-ohjelmointiin

Serial Readbytesuntil Funktio Arduino Ohjelmointiin



Mitä tulee Arduinon ohjelmointiin, on monia toimintoja, joita voit käyttää syötteen ja ulostulon manipulointiin. Yksi Arduinon päätoiminto on Serial.readBytesUntil() , jonka avulla voit lukea tietoja virrasta, kunnes tietty merkki löytyy. Tämä toiminto auttaa lukemaan tietoja sarjalaitteista, kunnes löydämme tarvittavat tiedot.

Tämä kirjoitus kokoaa Serial.readBytesUntil()-funktion perusteellisesti. Keskustelemme siitä, mikä se on, miten se toimii, ja katamme Arduino-koodin, joka selittää kuinka sitä käytetään Arduino-koodissa.

Serial.readBytesUntil()

Serial.readBytesUntil()-funktio on osa Arduino Serial -luokkaa. Tämä toiminto lukee dataa virrasta, kunnes se löytää tietyn merkin tai enimmäismäärän tavuja. Kun merkki tai tavujen enimmäismäärä on löydetty, funktio lopettaa lukemisen ja palauttaa lukemansa tiedot.







Serial.readBytesUntil()-funktio päättyy aina, kun seuraavat ehdot täyttyvät:



  • Kun toiminto havaitsee terminaattorimerkin
  • Määritetty puskurin pituus on saavutettu
  • Asetettu aika on kulunut tai aikakatkaistiin

Tämä toiminto ei palauta päätemerkkiä, vaan se palauttaa vain tiedot viimeiseen päätemerkkiä edeltävään merkkiin asti. Kun tämä funktio palauttaa 0:n, kelvollisia tietoja ei löydy.



Syntaksi

Serial.readBytesUntil()-funktiolla on seuraava syntaksi:





Sarja. readBytesUntil ( hiiltyä terminaattori, hiiltyä * puskuri, koko_t pituus ) ;

Parametrit

Seuraavat ovat funktion Serial.readBytesUntil() parametrit:

  • Terminaattorin hahmo: Merkki, jonka lukemisen funktio lopettaa.
  • puskuri: Puskurissa luettava sarjatieto on Sallittu tietotyyppi on merkkijono tai tavu.
  • pituus: Luettavien tavujen enimmäismäärä. Sallittu tietotyyppi on int .

Palata

Puskuriin sijoitettujen tavujen määrä.



Huomautuksia: Paluutiedoissa päätemerkin hylkää funktio Serial.readBytesUntil() tietovirrasta.

Esimerkki Arduino-koodista

Seuraava Arduino-koodi selittää sen käytön Serial.readBytesUntil() toiminto:

mitätön perustaa ( ) {
Sarja. alkaa ( 9600 ) ; // Alusta sarjayhteys 9600 baudinopeudella
}

mitätön silmukka ( ) {
tavupuskuri [ 5 ] ; // Määritä tavutaulukko saapuvien tietojen tallentamiseksi
int numbytes = Sarja. readBytesUntil ( ' \n ' , puskuri, 5 ) ; // Lue sarjayhteydestä saapuvat tiedot, kunnes rivinvaihtomerkki havaitaan

jos ( numbytes > 0 ) { // Tarkista, luettiinko tavuja
Sarja. Tulosta ( 'Vastaanotettu hahmo:' ) ;
Sarja. kirjoittaa ( puskuri, numbytes ) ; // Tulosta vastaanotetut tiedot sarjamonitoriin
Sarja. println ( ) ;
}
}

Setup()-funktiossa baudinopeus muodostaa sarjayhteyden.

Loop()-funktiossa määritämme ensin tavutaulukon, jota kutsutaan 'puskuri' . Tätä taulukkoa käytetään sarjayhteydestä luetun saapuvan tiedon tallentamiseen.

Seuraavaksi kutsumme Serial.readBytesUntil() toiminto, joka lukee sarjayhteydestä tulevaa dataa, kunnes se kohtaa rivinvaihdon ('\n'). Seuraava argumentti on puskurin pituus, joka vie enintään 5 tavua dataa kerrallaan.

Palautettu tavu on tallennettu 'numbytes' muuttuja. Jos vastaanotettu data on suurempi kuin puskurin pituus, data lopetetaan ja lähetetään seuraavassa datavirrassa.

Lähtö

Johtopäätös

The Serial.readBytesUntil() Arduino-ohjelmoinnin toiminto lukee tavuja sarjatulovirrasta, kunnes määrätty päätemerkki vastaanotetaan. Funktio antaa luetut tavut yhteensä ja tallentaa ne annettuun puskuriin. Lue artikkeli saadaksesi lisätietoja Serial.readBytesUntil() -funktiosta.