Este artigo compila a função Serial.readBytesUntil() em profundidade. Discutiremos o que é, como funciona e abordaremos o código do Arduino que explica como usá-lo no código do Arduino.
Serial.readBytesUntil()
A função Serial.readBytesUntil() faz parte da classe Arduino Serial. Essa função lê dados de um fluxo até encontrar um caractere específico ou um número máximo de bytes. Uma vez encontrado o caractere ou o número máximo de bytes, a função interrompe a leitura e retorna os dados lidos.
A função Serial.readBytesUntil() termina sempre que as seguintes condições são atendidas:
- Quando a função detecta um caractere terminador
- O comprimento do buffer definido é atingido
- O tempo definido é passado ou o tempo esgotado
Esta função não retorna o caractere terminador, apenas retorna dados até o último caractere antes do terminador. Quando 0 é retornado por esta função, significa que nenhum dado válido foi encontrado.
Sintaxe
A função Serial.readBytesUntil() tem a seguinte sintaxe:
Serial. lerBytesAté ( Caracteres Exterminador do Futuro, Caracteres * amortecedor, tamanho_t comprimento ) ;
Parâmetros
A seguir estão os parâmetros da função Serial.readBytesUntil():
- Personagem Exterminador do Futuro: O caractere no qual a função parará de ler.
- amortecedor: No buffer, os dados seriais lidos são O tipo de dados permitido é uma matriz de char ou byte.
- comprimento: O número máximo de bytes a serem lidos. O tipo de dado permitido é int .
Retornar
O número de bytes colocados no buffer.
Notas: Nos dados de retorno, o caractere terminador é descartado pela função Serial.readBytesUntil() do fluxo de dados.
Exemplo de código do Arduino
O seguinte código do Arduino explica o uso de Serial.readBytesUntil() função:
vazio configurar ( ) {Serial. começar ( 9600 ) ; // Inicializa a conexão serial com baud rate de 9600
}
vazio laço ( ) {
buffer de bytes [ 5 ] ; // Define um array de bytes para armazenar os dados recebidos
int numBytes = Serial. lerBytesAté ( ' \n ' , amortecedor, 5 ) ; // Lê os dados recebidos da conexão serial até que um caractere de nova linha seja encontrado
se ( numBytes > 0 ) { // Verifica se algum byte foi lido
Serial. imprimir ( 'Caractere recebido: ' ) ;
Serial. escrever ( buffer, numBytes ) ; // Imprime os dados recebidos no monitor serial
Serial. println ( ) ;
}
}
Na função setup(), a taxa de transmissão estabelecerá a comunicação serial.
Na função loop(), primeiro definimos uma matriz de bytes chamada 'amortecedor' . Esta matriz será usada para armazenar os dados de entrada lidos da conexão serial.
A seguir, chamamos o Serial.readBytesUntil() função, que lê os dados recebidos da conexão serial até encontrar um caractere de nova linha ('\n'). O próximo argumento é o comprimento do buffer que levará no máximo 5 bytes de dados por vez.
O byte retornado é armazenado no 'numBytes' variável. Caso os dados recebidos sejam maiores que o comprimento do buffer, os dados serão encerrados e enviados no próximo fluxo de dados.
Saída
Conclusão
O Serial.readBytesUntil() A função na programação do Arduino lê bytes de um fluxo de entrada serial até que um caractere terminador especificado seja recebido. A função fornece o total de bytes lidos e os armazena em um buffer fornecido. Leia o artigo para obter mais informações relacionadas à função Serial.readBytesUntil().