Fonction arduino sscanf

Fonction arduino sscanf
La programmation Arduino a hérité de plusieurs fonctions du langage C. L'une des fonctions largement utilisées est SSCANF () à l'aide de laquelle nous pouvons lire les données de n'importe quelle chaîne ou texte. Dans ce guide, nous explorerons comment utiliser cette fonction dans la programmation Arduino. Commençons:

Fonction arduino sscanf ()

Dans la programmation Arduino, nous pouvons stocker des symboles, des caractères, des nombres ou toute autre donnée à l'intérieur d'une chaîne. Pour lire les données d'une chaîne, nous utilisons le sscanf () fonction; Il lit non seulement les données, mais peut également les stocker dans une nouvelle variable. Généralement, en C, les données de programmation sont lues en utilisant Scanf () Mais en utilisant cette fonction, nous ne pouvons lire les données qu'à l'aide de la console, si l'on veut lire une entrée de chaîne ou tout autre texte, la fonction SSCanf () est utilisée.

Syntaxe

Pour lire les données d'une chaîne, nous devons savoir comment fonctionne la fonction. Vous trouverez ci-dessous la syntaxe de la fonction sscanf ().

int SSCanf (char * data, char * format, Storage_variables);

Dans le code ci-dessus, le premier argument représente l'entrée qui contient les données de caractères ou de chaînes qui doivent être lues en utilisant le format défini dans le deuxième argument. Nous pouvons énumérer les données disponibles dans différentes variables en définissant le format dans le deuxième argument.

Paramètres

  • données: Ceci est un pointeur vers une chaîne que nous voulons lire.
  • format: Les spécificateurs de format seront utilisés ici pour lire les données d'une certaine manière.
  • Storage_variables: Il est utilisé pour stocker la valeur de lecture des pointeurs dans des arguments supplémentaires. Le nom de la variable doit être précédé par le & Sign Si nous devons stocker les valeurs dans une variable régulière plutôt que par un pointeur.

Spécificateurs de format

Le sscanf () La fonction utilise différents spécificateurs de format qui peuvent stocker des données d'une certaine manière. Il s'agit d'un ensemble unique de caractères précédés de% de signe suivis de symboles de caractères pertinents. Les symboles suivants sont généralement utilisés:

Symbole Taper
s Chaîne
c Charbon unique
d Décimal int
E, E, F, G, G Points flottants
U Insigned int
x, x Num hexadécimal

Valeur de retour

  • L'erreur de fin du fichier (EOF) sera renvoyée si la chaîne ne pouvait pas lire une valeur appropriée.
  • -1 est renvoyé si un autre type d'erreur est rencontré.
  • Le nombre total d'éléments lus est renvoyé comme une valeur entière par la fonction.

Exemples

Maintenant que nous connaissons la syntaxe et le travail de la fonction sscanf (), prenons un exemple pour mieux le comprendre.

1. Lire un élément du même type

Le premier exemple expliquera comment nous ne pouvons lire qu'une seule entrée de type de données d'une chaîne et la stocker dans une nouvelle variable.

Code

void setup()
En série.commencer (115200); / * Communication série commence * /
char * buffer = "Linuxhint"; / * La chaîne est initialisée dans la variable de tampon à l'aide de char * /
char Input_string [10]; / * Longueur de chaîne définie * /
int total_input_read; / * La variable est initialisée pour compter la lecture d'entrée totale * /
Total_input_read = sscanf (tampon, "% s", input_string); / * La fonction sscanf est utilisée pour lire la chaîne d'entrée * /
En série.print ("Valeur de chaîne stockée dans le tampon:");
En série.println (input_string); / * La chaîne d'entrée est imprimée sur le moniteur série * /
En série.print ("Non des éléments totaux lisent:");
En série.println (total_input_read); / * Aucune lecture d'entrée est imprimée sur le moniteur en série * /

VOID LOOP ()

Ici, dans ce code, nous commençons d'abord la communication en série pour imprimer les résultats sur le moniteur série. Ensuite, un tableau char est défini à l'aide d'une variable amortir. La longueur du tableau est définie sur 10, ce qui peut varier en conséquence. Une nouvelle variable est initialisée qui stockera le nombre total d'entrées.

Ensuite en utilisant le sscanf () La chaîne de fonction sera stockée à l'intérieur d'une nouvelle variable input_string. Ici dans sscanf (), nous utilisons le spécificateur de format % s car il ne lira que des chaînes comme entrée. Les deux résultats seront imprimés sur le moniteur en série.

Sortir

La sortie montre qu'une chaîne est prise en entrée et stockée dans une nouvelle variable input_string.

2. Lire plusieurs éléments de différents types

Cet exemple expliquera comment sscanf () prendra les données de plusieurs types de données à partir d'une seule chaîne d'entrée.

Code

void setup()
En série.commencer (115200); / * Communication série commence * /
char * data = "28 février 2022"; / * La nouvelle chaîne est initialisée * /
int date = 0; / * La variable est définie pour stocker la date * /
int an = 0; / * La variable est définie pour stocker l'année * /
Mois de char [10]; / * Un tableau est initialisé pour stocker le mois * /
En série.println (data); / * Les données d'entrée sont imprimées * /
SSCANF (données, "% 2d% s% 4d", & date, mois et année); / * sscanf lira les données de l'entrée et les stockera en variables distinctes * /
En série.println (date); / * La date de lecture est imprimée * /
En série.println (mois); / * Le mois de lecture est imprimé * /
En série.println (année); / * L'année de lecture est imprimée * /

void loop ()

Dans le code ci-dessus, nous avons créé un données variable qui peut stocker la chaîne donnée. Trois dates variables différentes, l'année et le mois stockeront séparément l'entrée de lecture de la chaîne. mois la variable est initialisée avec une taille de 10 qui peut être modifiée en conséquence.

Suivant sscanf () La fonction lira les données de l'entrée et les stockera en trois variables différentes. Comme la date et l'année représentent les deux une valeur entière donc %d Le symbole est utilisé avec les numéro 2 et 4 qui représente le nombre de nombres que nous voulons lire. Le % s Le symbole est utilisé avec le mois qui retournera les caractères jusqu'à ce qu'un espace blanc arrive.

S'il n'y a pas d'espace entre les données, alors nous pouvons utiliser % c avec un nombre qui représentera le nombre de caractères que nous voulons lire. Toutes les données lues seront imprimées séparément en utilisant En série.println ().

Sortir

La sortie montre la chaîne d'entrée. Sscanf () lira les données et les stockera en trois variables distinctes.

Conclusion

Généralement, alors que la programmation du langage C, nous lisons les entrées de l'utilisateur à l'aide de la fonction Scanf (), mais elle n'est limitée qu'à la console. Pour lire les données d'une chaîne définie et la stocker séparément dans plusieurs variables que nous utilisons sscanf () fonction dans la programmation Arduino. Cette écriture vous aidera à comprendre sscanf () et lire les données des chaînes définies.