Funzione Serial.readBytesUntil() nella programmazione Arduino

Funzione Serial Readbytesuntil Nella Programmazione Arduino



Quando si tratta di programmare con Arduino, ci sono molte funzioni che puoi usare per manipolare input e output. Una delle funzioni principali di Arduino è Serial.readBytesUntil() , che consente di leggere i dati da un flusso finché non viene trovato un carattere specifico. Questa funzione aiuta a leggere i dati dai dispositivi seriali finché non troviamo i dati richiesti.

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