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