Denna uppskrivning kompilerar Serial.readBytesUntil()-funktionen på djupet. Vi kommer att diskutera vad det är, hur det fungerar och täcka Arduino-kod som förklarar hur man använder den i Arduino-kod.
Serial.readBytesUntil()
Funktionen Serial.readBytesUntil() är en del av klassen Arduino Serial. Denna funktion läser data från en ström tills den hittar ett specifikt tecken eller ett maximalt antal byte. När tecknet eller det maximala antalet byte har hittats, slutar funktionen läsa och returnerar den data som den har läst.
Funktionen Serial.readBytesUntil() avslutas när följande villkor är uppfyllda:
- När funktion upptäcker ett terminatortecken
- Den definierade buffertlängden har uppnåtts
- Den inställda tiden har passerat eller Times out
Den här funktionen returnerar inte terminatortecknet, den returnerar bara data upp till det sista tecknet före terminatorn. När 0 returneras av denna funktion betyder det att ingen giltig data hittas.
Syntax
Funktionen Serial.readBytesUntil() har följande syntax:
Serie. readBytesUntil ( röding terminator, röding * buffert, storlek_t längd ) ;
Parametrar
Följande är parametrarna för funktionen Serial.readBytesUntil():
- Terminator karaktär: Tecknet som funktionen slutar läsa på.
- buffert: I bufferten är den lästa seriella data Den tillåtna datatypen är en array av char eller byte.
- längd: Det maximala antalet byte att läsa. Den tillåtna datatypen är int .
Lämna tillbaka
Antalet byte placerade i bufferten.
Anmärkningar: I returdata kasseras terminatortecknet av funktionen Serial.readBytesUntil() från dataströmmen.
Exempel på Arduino-kod
Följande Arduino-kod förklarar användningen av Serial.readBytesUntil() fungera:
tomhet uppstart ( ) {Serie. Börja ( 9600 ) ; // Initiera den seriella anslutningen med en baudhastighet på 9600
}
tomhet slinga ( ) {
byte buffert [ 5 ] ; // Definiera en byte-array för att lagra inkommande data
int antalByte = Serie. readBytesUntil ( ' \n ' , buffert, 5 ) ; // Läs inkommande data från serieanslutningen tills ett nyradstecken påträffas
om ( antalByte > 0 ) { // Kontrollera om några bytes lästes
Serie. skriva ut ( 'Mottagen karaktär: ' ) ;
Serie. skriva ( buffert, antalBytes ) ; // Skriv ut mottagen data till den seriella monitorn
Serie. println ( ) ;
}
}
I setup()-funktionen kommer baudraten att upprätta seriell kommunikation.
I loop()-funktionen definierar vi först en byte-array som kallas 'buffert' . Denna array kommer att användas för att lagra inkommande data som läses från serieanslutningen.
Därefter kallar vi Serial.readBytesUntil() funktion, som läser in inkommande data från serieanslutningen tills den stöter på ett nyradstecken ('\n'). Nästa argument är längden på bufferten som tar maximalt 5 byte data åt gången.
Den returnerade byten lagras i 'antalBytes' variabel. Om den mottagna datan är större än buffertlängden kommer data att avslutas och skickas i nästa dataström.
Produktion
Slutsats
De Serial.readBytesUntil() funktion i Arduino-programmering läser bytes från en seriell ingångsström tills ett specificerat terminatortecken tas emot. Funktionen ger totala bytes lästa och lagrar dem i en tillhandahållen buffert. Läs artikeln för att få mer information relaterad till Serial.readBytesUntil()-funktionen.