Funkce Serial.readBytesUntil() v programování Arduino

Funkce Serial Readbytesuntil V Programovani Arduino



Pokud jde o programování pomocí Arduina, existuje mnoho funkcí, které můžete použít k manipulaci se vstupem a výstupem. Jedna hlavní funkce Arduina je Serial.readBytesUntil() , který umožňuje číst data z proudu, dokud není nalezen konkrétní znak. Tato funkce pomáhá číst data ze sériových zařízení, dokud nenajdeme požadovaná data.

Tento zápis do hloubky zkompiluje funkci Serial.readBytesUntil(). Budeme diskutovat o tom, co to je, jak to funguje, a pokryjeme kód Arduino, který vysvětluje, jak jej používat v kódu Arduino.

Serial.readBytesUntil()

Funkce Serial.readBytesUntil() je součástí třídy Arduino Serial. Tato funkce čte data z proudu, dokud nenajde konkrétní znak nebo maximální počet bajtů. Jakmile je nalezen znak nebo maximální počet bajtů, funkce přestane číst a vrátí data, která přečetla.







Funkce Serial.readBytesUntil() se ukončí vždy, když jsou splněny následující podmínky:



  • Když funkce detekuje znak zakončení
  • Je dosaženo definované délky vyrovnávací paměti
  • Nastavený čas vypršel nebo vypršel čas

Tato funkce nevrací ukončovací znak, pouze vrací data až do posledního znaku před ukončovacím znakem. Když tato funkce vrátí 0, znamená to, že nebyla nalezena žádná platná data.



Syntax

Funkce Serial.readBytesUntil() má následující syntaxi:





Seriál. readBytesUntil ( char terminátor, char * vyrovnávací paměť, velikost_t délka ) ;

Parametry

Níže jsou uvedeny parametry funkce Serial.readBytesUntil():

  • Postava terminátora: Znak, u kterého funkce přestane číst.
  • vyrovnávací paměť: Ve vyrovnávací paměti jsou čtená sériová data. Povolený typ dat je pole znaků nebo bajtů.
  • délka: Maximální počet bajtů ke čtení. Povolený datový typ je int .

Vrátit se

Počet bajtů umístěných ve vyrovnávací paměti.



Poznámky: Ve zpětných datech je ukončovací znak odstraněn funkcí Serial.readBytesUntil() z datového toku.

Příklad kódu Arduino

Následující kód Arduino vysvětluje použití Serial.readBytesUntil() funkce:

prázdnota založit ( ) {
Seriál. začít ( 9600 ) ; // Inicializujte sériové připojení s přenosovou rychlostí 9600
}

prázdnota smyčka ( ) {
byte buffer [ 5 ] ; // Definuje bajtové pole pro ukládání příchozích dat
int numBytes = Seriál. readBytesUntil ( ' \n ' , vyrovnávací paměť, 5 ) ; // Čtení příchozích dat ze sériového připojení, dokud nenarazíte na znak nového řádku

-li ( numBytes > 0 ) { // Zkontrolujte, zda byly přečteny nějaké bajty
Seriál. tisk ( 'Přijatá postava:' ) ;
Seriál. napsat ( vyrovnávací paměť, numBytes ) ; // Tisk přijatých dat na sériový monitor
Seriál. println ( ) ;
}
}

Ve funkci setup() naváže přenosová rychlost sériovou komunikaci.

Ve funkci loop() nejprve definujeme volané bajtové pole 'vyrovnávací paměť' . Toto pole bude použito k uložení příchozích dat načtených ze sériového připojení.

Dále zavoláme Serial.readBytesUntil() funkce, která čte příchozí data ze sériového připojení, dokud nenarazí na znak nového řádku („\n“). Dalším argumentem je délka vyrovnávací paměti, která zabere maximálně 5 bajtů dat najednou.

Vrácený bajt je uložen v 'numBytes' variabilní. V případě, že přijatá data jsou větší než délka bufferu, data budou ukončena a budou odeslána v dalším datovém toku.

Výstup

Závěr

The Serial.readBytesUntil() Funkce v programování Arduino čte bajty ze sériového vstupního toku, dokud není přijat zadaný znak zakončení. Funkce poskytuje celkový počet přečtených bajtů a ukládá je do poskytnuté vyrovnávací paměti. Přečtěte si článek a získejte další informace související s funkcí Serial.readBytesUntil().