Funkcja Arduino Sscanf

Funkcja Arduino Sscanf
Programowanie Arduino odziedziczyło wiele funkcji z języka C. Jedną z powszechnie używanych funkcji jest sscanf (), używając, które możemy odczytać dane z dowolnego ciągu lub tekstu. W tym przewodniku zbadamy, jak korzystać z tej funkcji w programowaniu Arduino. Zaczynajmy:

Funkcja Arduino sscanf ()

W programowaniu Arduino możemy przechowywać symbole, znaki, liczby lub inne dane w ciągu ciągu. Aby odczytać dane z ciągu używamy sscanf () funkcjonować; Nie tylko odczytuje dane, ale może również przechowywać je w nowej zmiennej. Zasadniczo w danych programowania C są odczytywane za pomocą Scanf () Ale za pomocą tej funkcji możemy odczytać dane za pomocą konsoli, jeśli ktoś chce odczytać dane wejściowe z ciągu lub dowolnego innego tekstu, używana jest funkcja sscanf ().

Składnia

Aby odczytać dane z ciągu, musimy wiedzieć, jak działa funkcja. Poniżej znajduje się składnia funkcji sscanf ().

int sscanf (char *dane, format char *, storage_variables);

W powyższym kodzie pierwsza argument przedstawia wejście, które zawiera dane tablicy znaków lub ciągów, które mają być odczytane przy użyciu formatu zdefiniowanego w drugim argumencie. Możemy wymienić dostępne dane w różnych zmiennych, definiując format w drugim argumencie.

Parametry

  • dane: To jest wskaźnik do ciągu, który chcemy przeczytać.
  • format: Specyfikatory formatu zostaną tutaj używane do odczytu danych w określony sposób.
  • Storage_variables: Służy do przechowywania wartości odczytu z wskaźników w dodatkowych argumentach. Nazwa zmiennej musi być poprzedzona znakiem &.

Specyfikatory formatu

sscanf () Funkcja używa różnych specyfikatorów formatu, które mogą przechowywać dane w określony sposób. Jest to unikalny zestaw znaków poprzedzonych znakiem %, a następnie odpowiednich symboli znaków. Zwykle używane są następujące symbole:

Symbol Typ
S Strunowy
C Pojedynczy char
D Dziesiętne int
e, e, f, g, g Pływające punkty
U Niepodpisany int
x, x Heksadecimal Num

Wartość zwracana

  • Koniec błędu pliku (EOF) zostanie zwrócony, jeśli ciąg nie będzie mógł odczytać właściwej wartości.
  • -1 jest zwracany, jeśli napotkany jest jakikolwiek inny rodzaj błędu.
  • Całkowita liczba odczytu elementów jest zwracana jako wartość liczb całkowita przez funkcję.

Przykłady

Teraz, gdy znamy składnię i działanie funkcji sscanf (), weźmy przykład, aby to lepiej zrozumieć.

1. Czytanie jednego elementu tego samego typu

Pierwszy przykład wyjaśni, w jaki sposób możemy odczytać tylko pojedyncze wejście typu danych z łańcucha i przechowywać w nowej zmiennej.

Kod

void setup ()
Seryjny.rozpocząć (115200); /*Komunikacja szeregowa rozpoczyna się*/
char* buffer = "Linuxhint"; /*Ciąg jest inicjowany w zmiennej bufora za pomocą char*/
char input_string [10]; /*Zdefiniowana długość ciągu*/
int total_input_read; /*zmienna jest inicjowana w celu zliczenia całkowitego odczytu wejściowego*/
Total_input_read = sscanf (bufor, „%s”, input_string); /*funkcja sscanf jest używana do odczytania ciągów wejściowych*/
Seryjny.print („Wartość ciągów zapisana w buforze:”);
Seryjny.println (input_string); /*ciąg wejściowy jest wydrukowany na monitorze szeregowym*/
Seryjny.Drukuj („Nie przeczytał całkowitej całkowitej pozycji:”);
Seryjny.println (total_input_read); /*Nie odczyt wejściowy jest wydrukowany na monitor szeregowych*/

Void Loop ()

Tutaj w tym kodzie najpierw rozpoczynamy komunikację szeregową, aby wydrukować wyniki na monitor szeregowych. Następnie tablica char jest definiowana za pomocą zmiennej bufor. Długość tablicy jest ustawiona na 10, co może się odpowiednio się różnić. Inicjowana jest nowa zmienna, która będzie przechowywać całkowitą liczbę odczytu danych wejściowych.

Następnie za pomocą sscanf () Ciąg funkcji będzie przechowywany w nowej zmiennej Input_String. Tutaj, w sscanf () używamy specyfikatora formatu %S Ponieważ będzie odczytać tylko ciągi jako dane wejściowe. Oba wyniki zostaną wydrukowane na monitorze szeregowym.

Wyjście

Wyjście pokazuje, że ciąg jest przyjmowany jako wejście i przechowywane w nowej zmiennej Input_String.

2. Czytanie wielu elementów różnych typów

Ten przykład wyjaśni, w jaki sposób sscanf () przyjmie dane wielu typów danych z jednego ciągu wejściowego.

Kod

void setup ()
Seryjny.rozpocząć (115200); /*Komunikacja szeregowa rozpoczyna się*/
char *data = "28 lutego 2022"; /*Nowy ciąg jest inicjowany*/
int data = 0; /*Zmienna jest zdefiniowana w celu przechowywania daty*/
int rok = 0; /*Zmienna jest zdefiniowana do roku przechowywania*/
Miesiąc char [10]; /*Tablica jest inicjowana do magazynowania miesiąca*/
Seryjny.println (dane); /*Dane wejściowe są drukowane*/
sscanf (dane, „ %2d %s %4d” i data, miesiąc i rok); /*sscanf odczytuje dane z wejścia i przechowuje je w osobnych zmiennych*/
Seryjny.println (data); /*Data odczytu jest drukowana*/
Seryjny.println (miesiąc); /*Miesiąc odczytu jest wydrukowany*/
Seryjny.println (rok); /*Rok odczytu jest drukowany*/

void Loop ()

W powyższym kodzie utworzyliśmy dane zmienna, która może przechowywać dany ciąg. Trzy różne daty zmiennych, rok i miesiąc będą przechowywać wkład odczytu z ciągu osobno. miesiąc Zmienna jest inicjowana z rozmiarem 10, którą można odpowiednio modyfikować.

Następny sscanf () Funkcja odczytuje dane z wejścia i przechowuje je w trzech różnych zmiennych. Jako data i rok reprezentują więc wartość całkowitą %D Symbol jest używany wraz z numerem 2 i 4, który reprezentuje liczbę liczb, które chcemy przeczytać. %S Symbol jest używany z miesiącem, który zwraca postacie, aż nadejdzie biała przestrzeń.

Jeśli nie ma miejsca między danymi, możemy użyć %C wraz z liczbą, która będzie reprezentować liczbę znaków, które chcemy przeczytać. Wszystkie odczyt danych zostaną wydrukowane osobno za pomocą Seryjny.println ().

Wyjście

Wyjście pokazuje ciąg wejściowy. Sscanf () odczytuje dane i przechowuje je w oddzielnych trzech zmiennych.

Wniosek

Zasadniczo, podczas gdy programowanie w języku C odczytujemy wejście od użytkownika za pomocą funkcji scanf (), ale jest on ograniczony tylko do konsoli. Aby odczytać dane z zdefiniowanego ciągu i przechowywać je osobno w wielu używanych zmiennych sscanf () Funkcja w programowaniu Arduino. Ten zapis pomoże ci zrozumieć sscanf () i odczyt dane z zdefiniowanych strun.