Tento zápis do hĺbky skompiluje funkciu Serial.readBytesUntil(). Budeme diskutovať o tom, čo to je, ako to funguje, a pokryjeme kód Arduino, ktorý vysvetľuje, ako ho používať v kóde Arduino.
Serial.readBytesUntil()
Funkcia Serial.readBytesUntil() je súčasťou triedy Arduino Serial. Táto funkcia číta dáta z prúdu, kým nenájde konkrétny znak alebo maximálny počet bajtov. Po nájdení znaku alebo maximálneho počtu bajtov funkcia zastaví čítanie a vráti dáta, ktoré čítala.
Funkcia Serial.readBytesUntil() sa ukončí vždy, keď sú splnené nasledujúce podmienky:
- Keď funkcia rozpozná znak ukončenia
- Dosiahla sa definovaná dĺžka vyrovnávacej pamäte
- Nastavený čas uplynul alebo vypršal čas
Táto funkcia nevracia znak ukončenia, ale iba údaje po posledný znak pred znakom ukončenia. Keď táto funkcia vráti 0, znamená to, že sa nenašli žiadne platné údaje.
Syntax
Funkcia Serial.readBytesUntil() má nasledujúcu syntax:
Serial. readBytesUntil ( char terminátor, char * nárazník, size_t dĺžka ) ;
Parametre
Nasledujú parametre funkcie Serial.readBytesUntil():
- Postava terminátora: Znak, pri ktorom funkcia prestane čítať.
- vyrovnávacia pamäť: Vo vyrovnávacej pamäti sú načítané sériové údaje. Povolený typ údajov je pole znakov alebo bajtov.
- dĺžka: Maximálny počet bajtov na čítanie. Povolený typ údajov je int .
Návrat
Počet bajtov umiestnených vo vyrovnávacej pamäti.
Poznámky: V návratových dátach je znak ukončenia vyradený funkciou Serial.readBytesUntil() z dátového toku.
Príklad Arduino kódu
Nasledujúci kód Arduino vysvetľuje použitie Serial.readBytesUntil() funkcia:
neplatné nastaviť ( ) {Serial. začať ( 9600 ) ; // Inicializujte sériové pripojenie s prenosovou rýchlosťou 9600
}
neplatné slučka ( ) {
bajtová vyrovnávacia pamäť [ 5 ] ; // Definujte bajtové pole na ukladanie prichádzajúcich údajov
int numBytes = Serial. readBytesUntil ( ' \n ' , vyrovnávacia pamäť, 5 ) ; // Čítanie prichádzajúcich údajov zo sériového pripojenia, kým nenájdete znak nového riadku
ak ( numBytes > 0 ) { // Skontrolujte, či boli prečítané nejaké bajty
Serial. vytlačiť ( 'Prijatá postava: ' ) ;
Serial. písať ( vyrovnávacia pamäť, numBytes ) ; // Vytlačte prijaté údaje na sériový monitor
Serial. println ( ) ;
}
}
Vo funkcii setup() nadviaže prenosová rýchlosť sériovú komunikáciu.
Vo funkcii loop() najskôr definujeme bajtové pole tzv „nárazník“ . Toto pole sa použije na ukladanie prichádzajúcich údajov načítaných zo sériového pripojenia.
Ďalej zavoláme Serial.readBytesUntil() funkcia, ktorá číta prichádzajúce dáta zo sériového pripojenia, kým nenarazí na znak nového riadku („\n“). Ďalším argumentom je dĺžka vyrovnávacej pamäte, ktorá naraz zaberie maximálne 5 bajtov údajov.
Vrátený bajt je uložený v „numBytes“ premenlivý. V prípade, že prijaté dáta sú väčšie ako dĺžka vyrovnávacej pamäte, dáta budú ukončené a budú odoslané v nasledujúcom dátovom toku.
Výkon
Záver
The Serial.readBytesUntil() funkcia v programovaní Arduino číta bajty zo sériového vstupného toku, kým sa neprijme špecifikovaný znak ukončenia. Funkcia poskytuje celkový počet prečítaných bajtov a ukladá ich do poskytnutej vyrovnávacej pamäte. Prečítajte si článok a získajte ďalšie informácie týkajúce sa funkcie Serial.readBytesUntil().