Serial.readBytesUntil() függvény az Arduino programozásban

Serial Readbytesuntil Fuggveny Az Arduino Programozasban



Ami az Arduino programozást illeti, számos funkciót használhat a bemenet és a kimenet manipulálására. Az Arduino egyik fő funkciója az Serial.readBytesUntil() , amely lehetővé teszi, hogy adatokat olvasson egy adatfolyamból, amíg meg nem talál egy adott karaktert. Ez a funkció segít a soros eszközökről származó adatok beolvasásában, amíg meg nem találjuk a szükséges adatokat.

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.