Serial.readBytesUntil() Functie in Arduino-programmering

Serial Readbytesuntil Functie In Arduino Programmering



Als het gaat om programmeren met Arduino, zijn er veel functies die u kunt gebruiken om invoer en uitvoer te manipuleren. Een belangrijke Arduino-functie is Serial.readBytesUntil() , waarmee u gegevens uit een stream kunt lezen totdat een specifiek teken is gevonden. Deze functie helpt bij het lezen van gegevens van seriële apparaten totdat we de vereiste gegevens vinden.

Dit artikel compileert de functie Serial.readBytesUntil() grondig. We zullen bespreken wat het is, hoe het werkt, en Arduino-code bespreken die uitlegt hoe je het in Arduino-code kunt gebruiken.

Serial.readBytesUntil()

De functie Serial.readBytesUntil() maakt deel uit van de Arduino Serial-klasse. Deze functie leest gegevens uit een stream totdat deze een specifiek teken of een maximaal aantal bytes vindt. Zodra het teken of het maximale aantal bytes is gevonden, stopt de functie met lezen en retourneert de gelezen gegevens.







De functie Serial.readBytesUntil() wordt beëindigd wanneer aan de volgende voorwaarden wordt voldaan:



  • Wanneer de functie een terminatorkarakter detecteert
  • De gedefinieerde bufferlengte is bereikt
  • De ingestelde tijd is verstreken of Time-out

Deze functie retourneert niet het terminatorteken, maar retourneert alleen gegevens tot het laatste teken vóór de terminator. Wanneer 0 wordt geretourneerd door deze functie, betekent dit dat er geen geldige gegevens zijn gevonden.



Syntaxis

De functie Serial.readBytesUntil() heeft de volgende syntaxis:





Serieel. leesBytesTot ( char terminator, char * buffer, maat_t lengte ) ;

Parameters

Hieronder volgen de parameters van de functie Serial.readBytesUntil():

  • Terminator-karakter: Het teken waarbij de functie stopt met lezen.
  • buffer: In de buffer zijn de gelezen seriële gegevens. Het toegestane gegevenstype is een reeks tekens of bytes.
  • lengte: Het maximale aantal te lezen bytes. Het toegestane gegevenstype is int .

Opbrengst

Het aantal bytes dat in de buffer is geplaatst.



Opmerkingen: In geretourneerde gegevens wordt het terminatorteken verwijderd door de functie Serial.readBytesUntil() uit de gegevensstroom.

Voorbeeld Arduino-code

De volgende Arduino-code legt het gebruik van uit Serial.readBytesUntil() functie:

leegte opgericht ( ) {
Serieel. beginnen ( 9600 ) ; // Initialiseer de seriële verbinding met een baudrate van 9600
}

leegte lus ( ) {
byte buffer [ 5 ] ; // Definieer een byte-array om de inkomende gegevens op te slaan
int aantalBytes = Serieel. leesBytesTot ( ' \N ' , bufferen, 5 ) ; // Lees binnenkomende gegevens van de seriële verbinding totdat een nieuwregelteken wordt aangetroffen

als ( aantalBytes > 0 ) { // Controleer of er bytes zijn gelezen
Serieel. afdrukken ( 'Ontvangen karakter: ' ) ;
Serieel. schrijven ( buffer, aantalBytes ) ; // Print de ontvangen gegevens naar de seriële monitor
Serieel. println ( ) ;
}
}

In de functie setup() zal de baudrate seriële communicatie tot stand brengen.

In de functie loop() definiëren we eerst een byte-array genaamd 'buffer' . Deze array wordt gebruikt om de binnenkomende gegevens op te slaan die van de seriële verbinding zijn gelezen.

Vervolgens bellen we de Serial.readBytesUntil() functie, die binnenkomende gegevens van de seriële verbinding leest totdat deze een teken voor een nieuwe regel ('\n') tegenkomt. Het volgende argument is de lengte van de buffer die maximaal 5 bytes aan gegevens per keer kan bevatten.

De geretourneerde byte wordt opgeslagen in het 'aantalBytes' variabel. Als de ontvangen gegevens groter zijn dan de bufferlengte, worden de gegevens beëindigd en in de volgende gegevensstroom verzonden.

Uitgang

Conclusie

De Serial.readBytesUntil() functie in Arduino-programmering leest bytes van een seriële invoerstroom totdat een gespecificeerd terminatorteken wordt ontvangen. De functie geeft het totale aantal gelezen bytes en slaat ze op in een voorziene buffer. Lees het artikel voor meer informatie over de functie Serial.readBytesUntil().