Arduino Serial.odczyt i serial.pisać

Arduino Serial.odczyt i serial.pisać
Arduino to elektroniczna platforma prototypowania używana przez początkujących, studentów i inżynierów do projektowania wielu projektów. Arduino wykorzystuje komunikację szeregową do transmisji i odbierania danych z różnymi sprzętem i czujnikami. Aby pomóc użytkownikom w programowaniu szeregowej komunikacji Arduino ma listę dostępnych funkcji szeregowych. Wśród nich dwie szeroko stosowane funkcje do transmisji i odbierania danych są Seryjny.pisać() I Seryjny.Czytać() odpowiednio. Przeczytaj ten przewodnik, aby uzyskać solidną wiedzę na temat tych dwóch funkcji.

Arduino Serial.Czytać()

W programowaniu Arduino funkcji Seryjny.Czytać() odczytuje przychodzące dane szeregowe na porcie szeregowym Arduino. Dane są przechowywane za pomocą typu danych INT. Seryjny.Odczyt () Funkcja odczytuje dane w bajtach i zwraca liczbę ujemną -1, gdy nie są dostępne dane w porcie szeregowym Arduino. Dane odczytu są przechowywane w postaci bajtów i 1 bajt = 8 bitów.

Gdy dane są wprowadzane do płyty Arduino, UART zgromadzi każdy z 8 bitów w jednym bajcie i przechowuje bajty danych w buforze szeregowym Arduino. Do 64 bajtów danych można przechowywać w buforze seryjnym odbiorczym.

Składnia

Składnia stosowana w programowaniu Arduino do szeregowej.Read () to:

Seryjny.Czytać()

Parametry

Seryjny: Oznacza to port Arduino. Przynajmniej jeden port szeregowy jest obecny na wszystkich tablicach Arduino. Sprawdź kartę danych odpowiednią płytę Arduino, aby uzyskać więcej informacji.

Wartość zwracana

Seryjny.Funkcje odczytu () Zwracają pierwszy bajt otrzymanych danych szeregowych. W przypadku, gdy nie zostaną odebrane żadne dane w funkcji portu szeregowego, zwróci -1. Zwracany typ danych to int.

Notatka: Seryjny.odczyt () nie zwróci żadnego rodzaju, jeśli nie ma danych, po prostu zwróci -1.

Przykładowy kod

Spójrzmy na przykład lepszego zrozumienia:

char inputserialdata = 0; /* Zmienna do przechowywania przychodzących danych szeregowych*/
void setup ()
Seryjny.rozpocząć (9600); /* Rozpoczyna się komunikacja szeregowa*/

void Loop ()
if (serial.Dostępne ()> 0) /* Jeśli warunek sprawdzania danych szeregowych* /
InputSerialData = szereg.Czytać(); /* Odczyt przychodzące dane szeregowe*/
Seryjny.print („Dane otrzymane:”); /* Drukuj otrzymane dane na temat monitora szeregowego*/
Seryjny.println (inputSerialData);

W powyższym kodzie najpierw zainicjowaliśmy zmienną do przechowywania danych szeregowych, a następnie w pętla() Sekcja, program sprawdzi dane szeregowe w porcie szeregowym, jeśli dane są dostępne, zostaną wydrukowane na monitor seryjnych, który można zobaczyć na terminalu wyjściowym.

Wyjście
Wyjście można zobaczyć na terminalu wyjściowym. Tutaj wysłaliśmy różne postacie do portu szeregowego Arduino:

Arduino Serial.pisać()

Seryjny.Funkcja zapisu () zapisuje dane binarne do portu szeregowego Arduino. Dane są przesyłane w szeregu bajtów. W przypadku, gdy chcemy przenieść lub napisać cyfry liczb reprezentowanych przez znaki, użyjemy seryjnych.print () zamiast szeregowego.Funkcja zapisu ().

Składnia
Poniżej znajduje się składnia podczas pisania danych seryjnych.

Poniższa składnia reprezentuje, kiedy musimy Napisz wartość seryjnie:

Seryjny.Napisz (val)

Kiedy musimy wysłać strunowy Poniżej położona będzie:

Seryjny.Napisz (STR)

Wysyłać konkretna liczba bajtów z łańcucha Poniżej znajduje się składnia:

Seryjny.Write (BUF, Len)

Parametry

Poniżej znajduje się lista parametrów szeregowych.Funkcja zapisu () zajmuje:

Seryjny: Port szeregowy tablicy Arduino.

val: Wartość, która zostanie ustawiona jako pojedynczy bajt.

str: Kiedy wysyłamy ciąg seryjnie jako seria bajtów.

BUF: Aby wysłać tablicę jako serię bajtów.

Len: Konkretna liczba bajtów wysłanych z tablicy seryjnej.

Wartość zwracana

Zwraca liczbę pisemnych bajtów, a zwrócony typ danych to size_t.

Przykładowy kod

Poniższy przykład pokazuje działanie seryjne.Funkcja zapisu ():

void setup ()
Seryjny.rozpocząć (9600);

void Loop ()
Seryjny.Napisz (45); / * 45 to wartość ASCII char („-”) */
int data_bytes_sent = serial.Napisz („Linuxhint.com "); /*Wyślij ciąg" Linuxhint.com ”i zwracaj długość ciągu*/
Opóźnienie (2000);

Tutaj w tym kodzie zainicjowaliśmy komunikację szeregową, abyśmy mogli przesyłać dane za pomocą komunikacji szeregowej. Najpierw używając szeregów.Write () i ASCII Wartość postaci Dash „-” będzie drukowana za każdym razem. Następny ciąg zostanie wysłany seryjnie za pomocą serialu.Funkcja zapisu (). Opóźnienie można łatwo odczytać:

Wyjście
String „Linuxhint.com ”jest seryjnie drukowane za pomocą serialu.Funkcja zapisu (). Monitor szeregowy wyświetla wyjście.

Różnica między Arduino Serial.Write () i seryjne.wydrukować()

Seryjny.pisać() Funkcja jest prosta i szybka. Ma się zajmować w binarnym znaczeniu jeden bajt na raz. Dane zapisane w binarie są wysyłane jako bajt lub seria bajtów.

Seryjny.wydrukować() Z drugiej strony funkcja jest bardziej wszechstronna, dane są drukowane na monitorze szeregowym jako tekst czytelny ludzki ASCII. Najpierw dane wejściowe są konwertowane z ASCII na binarne. Może również przekonwertować dane na kosz, hex, ok. I dec, ale musimy je określić w drugim argumencie funkcji.

Seryjny.Funkcja print () może przybierać wiele formularzy, takich jak:

  • Znaki ASCII służą do wydrukowania każdej cyfry liczby.
  • Pływaki wydrukowane jako cyfry ASCII, domyślnie do dwóch miejsc dziesiętnych.
  • Bajty wysłane w postaci pojedynczych znaków.
  • Znaki i sznurki są wysyłane bez żadnych zmian.

Wniosek

Zarząd Arduino wykorzystuje komunikację szeregową do transmisji i odbierania danych z peryferyjami. Arduino ma listę funkcji szeregowych, które pomagają Arduino w komunikacji szeregowej. Pomiędzy nimi Seryjny.Czytać() I Seryjny.pisać() to dwie funkcje, szeregowe.odczyt () odczytuje dane dostępne w buforze seryjnym i serialowym.Write () zapisuje dane do portu szeregowego Arduino jako pojedynczy bajt lub seria bajtów. Ten pismo pomoże dowiedzieć się o nich więcej.