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.