Funkcja Serial.readBytesUntil() w programowaniu Arduino

Funkcja Serial Readbytesuntil W Programowaniu Arduino



Jeśli chodzi o programowanie z Arduino, istnieje wiele funkcji, których można użyć do manipulowania danymi wejściowymi i wyjściowymi. Jedną z głównych funkcji Arduino jest Serial.readBytesUntil() , który umożliwia odczytywanie danych ze strumienia do momentu znalezienia określonego znaku. Funkcja ta pomaga w odczytywaniu danych z urządzeń szeregowych do momentu znalezienia potrzebnych danych.

Ten zapis zawiera dogłębną kompilację funkcji Serial.readBytesUntil(). Omówimy, co to jest, jak to działa i omówimy kod Arduino, który wyjaśnia, jak go używać w kodzie Arduino.

Serial.readBytesUntil()

Funkcja Serial.readBytesUntil() jest częścią klasy Arduino Serial. Ta funkcja odczytuje dane ze strumienia, dopóki nie znajdzie określonego znaku lub maksymalnej liczby bajtów. Po znalezieniu znaku lub maksymalnej liczby bajtów funkcja przestaje czytać i zwraca odczytane dane.







Funkcja Serial.readBytesUntil() kończy działanie, gdy spełnione są następujące warunki:



  • Gdy funkcja wykryje znak terminatora
  • Zdefiniowana długość bufora została osiągnięta
  • Ustawiony czas minął lub przekroczono limit czasu

Ta funkcja nie zwraca znaku terminatora, zwraca tylko dane do ostatniego znaku przed terminatorem. Kiedy ta funkcja zwraca 0, oznacza to, że nie znaleziono prawidłowych danych.



Składnia

Funkcja Serial.readBytesUntil() ma następującą składnię:





Seryjny. readBytesDo ( zwęglać terminator, zwęglać * bufor, rozmiar_t długość ) ;

Parametry

Poniżej przedstawiono parametry funkcji Serial.readBytesUntil():

  • Postać Terminatora: Znak, na którym funkcja przestanie czytać.
  • bufor: W buforze odczytywane są dane szeregowe. Dozwolony typ danych to tablica znaków lub bajtów.
  • długość: Maksymalna liczba bajtów do odczytania. Dozwolony typ danych to int .

Powrót

Liczba bajtów umieszczonych w buforze.



Uwagi: W zwracanych danych znak terminatora jest odrzucany przez funkcję Serial.readBytesUntil() ze strumienia danych.

Przykładowy kod Arduino

Poniższy kod Arduino wyjaśnia użycie Serial.readBytesUntil() funkcjonować:

próżnia organizować coś ( ) {
Seryjny. zaczynać ( 9600 ) ; // Zainicjuj połączenie szeregowe z szybkością 9600 bodów
}

próżnia pętla ( ) {
bufor bajtów [ 5 ] ; // Zdefiniuj tablicę bajtów do przechowywania przychodzących danych
int liczba bajtów = Seryjny. readBytesDo ( ' \N ' , bufor, 5 ) ; // Czytaj dane przychodzące z połączenia szeregowego, aż napotkasz znak nowej linii

Jeśli ( liczba bajtów > 0 ) { // Sprawdź, czy odczytano jakieś bajty
Seryjny. wydrukować ( „Otrzymana postać:” ) ;
Seryjny. pisać ( bufor, liczba bajtów ) ; // Wydrukuj odebrane dane na monitorze szeregowym
Seryjny. println ( ) ;
}
}

W funkcji setup() prędkość transmisji nawiąże komunikację szeregową.

W funkcji loop() najpierw definiujemy tablicę bajtów o nazwie 'bufor' . Ta tablica będzie używana do przechowywania danych przychodzących odczytywanych z połączenia szeregowego.

Następnie dzwonimy do Serial.readBytesUntil() funkcja, która odczytuje przychodzące dane z połączenia szeregowego, dopóki nie napotka znaku nowej linii („\n”). Kolejnym argumentem jest długość bufora, który jednorazowo zajmie maksymalnie 5 bajtów danych.

Zwrócony bajt jest przechowywany w „liczba bajtów” zmienny. W przypadku, gdy odebrane dane będą większe niż długość bufora, dane zostaną przerwane i wysłane w kolejnym strumieniu danych.

Wyjście

Wniosek

The Serial.readBytesUntil() funkcja w programowaniu Arduino odczytuje bajty z szeregowego strumienia wejściowego, dopóki nie zostanie odebrany określony znak terminatora. Funkcja podaje całkowitą liczbę odczytanych bajtów i przechowuje je w dostarczonym buforze. Przeczytaj artykuł, aby uzyskać więcej informacji związanych z funkcją Serial.readBytesUntil().