Funkcia Serial.readBytesUntil() v programovaní Arduina

Funkcia Serial Readbytesuntil V Programovani Arduina



Pokiaľ ide o programovanie pomocou Arduina, existuje veľa funkcií, ktoré môžete použiť na manipuláciu so vstupom a výstupom. Jednou z hlavných funkcií Arduina je Serial.readBytesUntil() , ktorý umožňuje čítať dáta z prúdu, kým sa nenájde konkrétny znak. Táto funkcia pomáha čítať dáta zo sériových zariadení, kým nenájdeme požadované dáta.

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().