Ez az írás részletesen lefordítja a Serial.readBytesUntil() függvényt. Megvitatjuk, mi ez, hogyan működik, és bemutatjuk az Arduino kódot, amely elmagyarázza, hogyan kell használni az Arduino kódban.
Serial.readBytesUntil()
A Serial.readBytesUntil() függvény az Arduino Serial osztály része. Ez a funkció addig olvassa be az adatokat egy adatfolyamból, amíg meg nem talál egy adott karaktert vagy egy maximális számú bájtot. Ha megtalálta a karaktert vagy a bájtok maximális számát, a függvény leállítja az olvasást, és visszaadja az olvasott adatokat.
A Serial.readBytesUntil() függvény leáll, ha a következő feltételek teljesülnek:
- Amikor a függvény terminátor karaktert észlel
- Elérte a meghatározott pufferhosszt
- A beállított idő eltelt vagy Időtúllépés
Ez a függvény nem adja vissza a lezáró karaktert, csak a terminátor előtti utolsó karakterig ad vissza adatokat. Ha ez a függvény 0-t ad vissza, az azt jelenti, hogy nem található érvényes adat.
Szintaxis
A Serial.readBytesUntil() függvény a következő szintaxissal rendelkezik:
Sorozatszám. readBytesUntil ( char Végrehajtó, char * puffer, size_t hossz ) ;
Paraméterek
A Serial.readBytesUntil() függvény paraméterei a következők:
- Terminátor karakter: Az a karakter, amelynél a függvény olvasása leáll.
- puffer: A pufferben az olvasott soros adatok a következők. Az engedélyezett adattípus egy karakterből vagy bájtból álló tömb.
- hossz: Az olvasandó bájtok maximális száma. A megengedett adattípus a int .
Visszatérés
A pufferben elhelyezett bájtok száma.
Megjegyzések: Visszatérő adatokban a lezáró karaktert a Serial.readBytesUntil() függvény kidobja az adatfolyamból.
Példa Arduino kódra
Az alábbi Arduino kód magyarázatot ad a használatára Serial.readBytesUntil() funkció:
üres beállít ( ) {Sorozatszám. kezdődik ( 9600 ) ; // Inicializálja a soros kapcsolatot 9600-as adatátviteli sebességgel
}
üres hurok ( ) {
bájtos puffer [ 5 ] ; // Határozzon meg egy bájttömböt a bejövő adatok tárolására
int numBytes = Sorozatszám. readBytesUntil ( ' \n ' , puffer, 5 ) ; // Bejövő adatok beolvasása a soros kapcsolatból, amíg újsor karaktert nem talál
ha ( numBytes > 0 ) { // Ellenőrizze, hogy beolvasott-e bájt
Sorozatszám. nyomtatás ( 'Fogadott karakter:' ) ;
Sorozatszám. ír ( puffer, numBytes ) ; // A fogadott adatok kinyomtatása a soros monitorra
Sorozatszám. println ( ) ;
}
}
A setup() függvényben az átviteli sebesség soros kommunikációt hoz létre.
A loop() függvényben először definiálunk egy bájttömböt, melynek neve 'puffer' . Ez a tömb a soros kapcsolatról beolvasott bejövő adatok tárolására szolgál.
Ezután hívjuk a Serial.readBytesUntil() függvény, amely addig olvassa be a bejövő adatokat a soros kapcsolatból, amíg az újsor karakterrel ('\n') nem találkozik. A következő argumentum a puffer hossza, amely egyszerre legfeljebb 5 bájt adatot foglal el.
A visszaadott bájt a 'numBytes' változó. Abban az esetben, ha a fogadott adat meghaladja a puffer hosszát, akkor az adat megszakad és a következő adatfolyamban kerül elküldésre.
Kimenet
Következtetés
A Serial.readBytesUntil() Az Arduino programozás funkciója bájtokat olvas ki egy soros bemeneti adatfolyamból, amíg meg nem érkezik egy meghatározott lezáró karakter. A függvény az összes beolvasott bájtot megadja, és egy adott pufferben tárolja. Olvassa el a cikket a Serial.readBytesUntil() függvényrel kapcsolatos további információkért.