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().