Funció Serial.readBytesUntil() a la programació d'Arduino

Funcio Serial Readbytesuntil A La Programacio D Arduino



Quan es tracta de programar amb Arduino, hi ha moltes funcions que podeu utilitzar per manipular l'entrada i la sortida. Una funció principal d'Arduino és Serial.readBytesUntil() , que us permet llegir dades d'un flux fins que es trobi un caràcter específic. Aquesta funció ajuda a llegir dades dels dispositius sèrie fins que trobem les dades necessàries.

Aquest escrit compila la funció Serial.readBytesUntil() en profunditat. Discutirem què és, com funciona i tractarem el codi Arduino que explica com utilitzar-lo al codi Arduino.

Serial.readBytesUntil()

La funció Serial.readBytesUntil() forma part de la classe Arduino Serial. Aquesta funció llegeix dades d'un flux fins que troba un caràcter específic o un nombre màxim de bytes. Un cop trobat el caràcter o el nombre màxim de bytes, la funció deixa de llegir i retorna les dades que ha llegit.







La funció Serial.readBytesUntil() finalitza sempre que es compleixen les condicions següents:



  • Quan la funció detecta un caràcter de terminació
  • S'ha arribat a la longitud del buffer definida
  • El temps establert s'ha passat o Time out

Aquesta funció no retorna el caràcter del terminador, només retorna dades fins a l'últim caràcter abans del terminador. Quan aquesta funció retorna 0 vol dir que no es troben dades vàlides.



Sintaxi

La funció Serial.readBytesUntil() té la sintaxi següent:





Serial. readBytesUntil ( char terminador, char * buffer, mida_t llargada ) ;

Paràmetres

A continuació es mostren els paràmetres de la funció Serial.readBytesUntil():

  • Personatge Terminator: El caràcter que la funció deixarà de llegir.
  • buffer: A la memòria intermèdia, les dades de sèrie llegides són. El tipus de dades permesos és una matriu de caràcters o bytes.
  • llargada: El nombre màxim de bytes per llegir. El tipus de dades permesos és int .

Tornar

El nombre de bytes col·locats a la memòria intermèdia.



Notes: A les dades de retorn, la funció Serial.readBytesUntil() descarta el caràcter de terminació del flux de dades.

Exemple de codi Arduino

Seguint el codi Arduino, expliqueu l'ús de Serial.readBytesUntil() funció:

buit configuració ( ) {
Serial. començar ( 9600 ) ; // Inicialitzar la connexió en sèrie amb una velocitat de transmissió de 9600
}

buit bucle ( ) {
memòria intermèdia de bytes [ 5 ] ; // Definim una matriu de bytes per emmagatzemar les dades entrants
int numBytes = Serial. readBytesUntil ( ' \n ' , buffer, 5 ) ; // Llegeix les dades entrants de la connexió en sèrie fins que es trobi un caràcter de nova línia

si ( numBytes > 0 ) { // Comproveu si s'ha llegit algun byte
Serial. imprimir ( 'Personatge rebut:' ) ;
Serial. escriure ( buffer, numBytes ) ; // Imprimeix les dades rebudes al monitor sèrie
Serial. imprimirln ( ) ;
}
}

A la funció setup() la velocitat de baudios establirà la comunicació en sèrie.

A la funció loop(), primer definim una matriu de bytes anomenada 'tampó' . Aquesta matriu s'utilitzarà per emmagatzemar les dades entrants llegides des de la connexió sèrie.

A continuació, anomenem el Serial.readBytesUntil() funció, que llegeix les dades entrants de la connexió en sèrie fins que troba un caràcter de nova línia ('\n'). El següent argument és la longitud de la memòria intermèdia que necessitarà un màxim de 5 bytes de dades alhora.

El byte retornat s'emmagatzema al fitxer 'numBytes' variable. En cas que les dades rebudes siguin superiors a la longitud del buffer, les dades s'acabaran i s'enviaran al següent flux de dades.

Sortida

Conclusió

El Serial.readBytesUntil() La funció a la programació d'Arduino llegeix bytes d'un flux d'entrada en sèrie fins que es rep un caràcter de terminació especificat. La funció dóna bytes totals llegits i els emmagatzema en un buffer proporcionat. Llegiu l'article per obtenir més informació relacionada amb la funció Serial.readBytesUntil().