Função Arduino SSCANF

Função Arduino SSCANF
A programação Arduino herdou várias funções da linguagem C. Uma das funções amplamente usadas é o sscanf () usando o qual podemos ler dados de qualquer string ou texto. Neste guia, exploraremos como usar essa função na programação Arduino. Vamos começar:

Função arduino sscanf ()

Na programação Arduino, podemos armazenar símbolos, caracteres, números ou qualquer outro dados dentro de uma string. Para ler os dados de uma string, usamos o sscanf () função; Ele não apenas lê os dados, mas também pode armazená -los dentro de uma nova variável. Geralmente, nos dados de programação C é lida usando Scanf () Mas, usando esta função, só podemos ler dados usando o console, se alguém quiser ler uma entrada da string ou qualquer outro texto que a função sscanf () seja usada.

Sintaxe

Para ler dados de uma string, devemos saber como a função funciona. Abaixo está a sintaxe da função sscanf ().

int sscanf (char *dados, char *formato, storage_variables);

No código acima, o primeiro argumento representa a entrada que contém os dados do caractere ou da matriz de string que devem ser lidos usando o formato definido no segundo argumento. Podemos listar dados disponíveis em diferentes variáveis, definindo o formato no segundo argumento.

Parâmetros

  • dados: Este é um ponteiro para uma corda que queremos ler.
  • formatar: Especificadores de formato serão usados ​​aqui para ler dados de uma certa maneira.
  • Storage_variables: É usado para armazenar o valor de leitura de ponteiros em argumentos adicionais. O nome da variável deve ser precedido pelo signo se precisarmos armazenar valores em uma variável regular em vez de um ponteiro.

Especificadores de formato

O sscanf () A função usa diferentes especificadores de formato que podem armazenar dados de uma certa maneira. É um conjunto único de caracteres precedidos por % sinal seguido de símbolos de caracteres relevantes. Os símbolos a seguir são geralmente usados:

Símbolo Tipo
s Corda
c Char único
d Decimal int
e, e, f, g, g Pontos flutuantes
você Não assinado int
x, x Num hexadecimal

Valor de retorno

  • O erro final do arquivo (EOF) será retornado se a string não puder ler um valor adequado.
  • -1 é retornado se algum outro tipo de erro for encontrado.
  • O número total de itens lidos é retornado como um valor inteiro pela função.

Exemplos

Agora que conhecemos a sintaxe e o trabalho da função sscanf (), vamos dar um exemplo para entendê -lo melhor.

1. Lendo um item do mesmo tipo

O primeiro exemplo explicará como podemos ler apenas uma única entrada de tipo de dados de uma string e armazená -la dentro de uma nova variável.

Código

Void Setup ()
Serial.começar (115200); /*Comunicação serial começa*/
char* buffer = "linuxhint"; /*String é inicializada na variável buffer usando char*/
char input_string [10]; /*Comprimento da string definido*/
int total_input_read; /*A variável é inicializada para contar a leitura total de entrada*/
Total_input_read = sscanf (buffer, "%s", input_string); /*A função sscanf é usada para ler a string de entrada*/
Serial.print ("Valor da string armazenado no buffer:");
Serial.println (input_string); /*A sequência de entrada é impressa no monitor serial*/
Serial.print ("Não do total de itens dizem:");
Serial.println (total_input_read); /*Não de leitura de entrada é impresso no monitor serial*/

Void Loop ()

Aqui neste código primeiro começamos a comunicação serial para imprimir resultados no monitor serial. Em seguida, uma matriz de char é definida usando uma variável amortecedor. O comprimento da matriz é definido como 10, o que pode variar de acordo. Uma nova variável é inicializada que armazenará o número total de entradas lidas.

Em seguida, usando o sscanf () A string de função será armazenada dentro de uma nova variável input_string. Aqui em sscanf () usamos o especificador de formato %s Porque ele só lerá strings como entrada. Ambos os resultados serão impressos no monitor serial.

Saída

A saída mostra que uma string é tomada como entrada e armazenada dentro de uma nova variável input_string.

2. Lendo vários itens de diferentes tipos

Este exemplo explicará como o sscanf () receberá dados de vários tipos de dados de uma única string de entrada.

Código

Void Setup ()
Serial.começar (115200); /*Comunicação serial começa*/
char *data = "28 de fevereiro de 2022"; /*New String é inicializada*/
int date = 0; /*A variável é definida para armazenar a data*/
int ano = 0; /*A variável é definida para armazenar ano*/
Char Month [10]; /*Uma matriz é inicializada para armazenar o mês*/
Serial.println (dados); /*Os dados de entrada são impressos*/
sscanf (dados, " %2d %s %4d", e data, mês e ano); /*O SSCANF lerá os dados da entrada e os armazenará em variáveis ​​separadas*/
Serial.println (data); /*A data de leitura é impressa*/
Serial.println (mês); /*O mês de leitura é impresso*/
Serial.println (ano); /*O ano de leitura é impresso*/

void loop ()

No código acima, criamos um dados variável que pode armazenar a string fornecida. Três datas variáveis ​​diferentes, ano e mês armazenarão a entrada de leitura da string separadamente. mês A variável é inicializada com tamanho de 10 que pode ser modificado de acordo.

Próximo sscanf () A função lerá os dados da entrada e os armazenará em três variáveis ​​diferentes. Como data e ano, ambos representam um valor inteiro %d O símbolo é usado junto com o número 2 e 4, o que representa quantos números queremos ler. O %s O símbolo é usado com o mês que retornará caracteres até que um espaço branco chegue.

Se não houver espaço entre dados, podemos usar %c junto com um número que representará o número de caracteres que queremos ler. Todas as leituras de dados serão impressas separadamente usando Serial.println ().

Saída

A saída mostra a sequência de entrada. O sscanf () lerá dados e os armazenará em três variáveis ​​separadas.

Conclusão

Geralmente, durante a programação na linguagem C, lemos a entrada do usuário usando a função scanf (), mas é limitada apenas ao console. Para ler dados de uma string definida e armazená -lo separadamente em várias variáveis ​​que usamos sscanf () função na programação arduino. Esta redação irá ajudá -lo a entender sscanf () e leia dados de strings definidos.