Questo articolo compila la funzione Serial.readBytesUntil() in modo approfondito. Discuteremo cos'è, come funziona e tratteremo il codice Arduino che spiega come usarlo nel codice Arduino.
Serial.readBytesUntil()
La funzione Serial.readBytesUntil() fa parte della classe Arduino Serial. Questa funzione legge i dati da un flusso finché non trova un carattere specifico o un numero massimo di byte. Una volta trovato il carattere o il numero massimo di byte, la funzione interrompe la lettura e restituisce i dati che ha letto.
La funzione Serial.readBytesUntil() termina quando vengono soddisfatte le seguenti condizioni:
- Quando la funzione rileva un carattere di terminazione
- La lunghezza del buffer definita è stata raggiunta
- Il tempo impostato è scaduto o è scaduto
Questa funzione non restituisce il carattere di terminazione, restituisce solo i dati fino all'ultimo carattere prima del terminatore. Quando 0 viene restituito da questa funzione significa che non sono stati trovati dati validi.
Sintassi
La funzione Serial.readBytesUntil() ha la seguente sintassi:
Seriale. readBytesUntil ( char terminatore, char * respingente, taglia_t lunghezza ) ;
Parametri
Di seguito sono riportati i parametri della funzione Serial.readBytesUntil():
- Carattere terminatore: Il carattere in corrispondenza del quale la funzione interromperà la lettura.
- respingente: Nel buffer i dati seriali letti sono Il tipo di dati consentito è un array di caratteri o byte.
- lunghezza: Il numero massimo di byte da leggere. Il tipo di dati consentito è int .
Ritorno
Il numero di byte inseriti nel buffer.
Appunti: Nei dati di ritorno il carattere di terminazione viene scartato dalla funzione Serial.readBytesUntil() dal flusso di dati.
Esempio di codice Arduino
Seguendo il codice Arduino spiega l'uso di Serial.readBytesUntil() funzione:
vuoto impostare ( ) {Seriale. inizio ( 9600 ) ; // Inizializza la connessione seriale con un baud rate di 9600
}
vuoto ciclo continuo ( ) {
buffer di byte [ 5 ] ; // Definisce un array di byte per memorizzare i dati in entrata
int numBytes = Seriale. readBytesUntil ( ' \N ' , respingente, 5 ) ; // Legge i dati in entrata dalla connessione seriale finché non incontra un carattere di nuova riga
Se ( numBytes > 0 ) { // Controlla se sono stati letti dei byte
Seriale. stampa ( 'Carattere ricevuto: ' ) ;
Seriale. scrivere ( buffer, numByte ) ; // Stampa i dati ricevuti sul monitor seriale
Seriale. println ( ) ;
}
}
Nella funzione setup() il baud rate stabilirà la comunicazione seriale.
Nella funzione loop(), per prima cosa definiamo un array di byte chiamato 'respingente' . Questo array verrà utilizzato per memorizzare i dati in ingresso letti dalla connessione seriale.
Successivamente, chiamiamo il Serial.readBytesUntil() funzione, che legge i dati in entrata dalla connessione seriale finché non incontra un carattere di nuova riga ('\n'). L'argomento successivo è la lunghezza del buffer che richiederà un massimo di 5 byte di dati alla volta.
Il byte restituito viene memorizzato nel file 'numByte' variabile. Nel caso in cui i dati ricevuti siano maggiori della lunghezza del buffer, i dati verranno terminati e verranno inviati nel successivo flusso di dati.
Produzione
Conclusione
IL Serial.readBytesUntil() La funzione nella programmazione Arduino legge i byte da un flusso di input seriale fino a quando non viene ricevuto un carattere di terminazione specificato. La funzione fornisce i byte totali letti e li memorizza in un buffer fornito. Leggi l'articolo per ottenere maggiori informazioni relative alla funzione Serial.readBytesUntil().