Funkcija Serial.readBytesUntil() u Arduino programiranju

Funkcija Serial Readbytesuntil U Arduino Programiranju



Kada je riječ o programiranju s Arduinom, postoje mnoge funkcije koje možete koristiti za manipuliranje ulazom i izlazom. Jedna glavna Arduino funkcija je Serial.readBytesUntil() , koji vam omogućuje čitanje podataka iz toka dok se ne pronađe određeni znak. Ova funkcija pomaže u čitanju podataka sa serijskih uređaja dok ne pronađemo potrebne podatke.

Ovaj zapis temeljito kompilira funkciju Serial.readBytesUntil(). Razgovarat ćemo o tome što je to, kako radi i pokriti Arduino kod koji objašnjava kako ga koristiti u Arduino kodu.

Serial.readBytesUntil()

Funkcija Serial.readBytesUntil() dio je Arduino Serial klase. Ova funkcija čita podatke iz toka dok ne pronađe određeni znak ili maksimalan broj bajtova. Nakon što se pronađe znak ili najveći broj bajtova, funkcija prestaje čitati i vraća podatke koje je pročitala.







Funkcija Serial.readBytesUntil() završava kad god se ispune sljedeći uvjeti:



  • Kada funkcija otkrije znak završetka
  • Dosegnuta je definirana duljina međuspremnika
  • Postavljeno vrijeme je isteklo ili je isteklo

Ova funkcija ne vraća znak završetka, vraća samo podatke do zadnjeg znaka prije znaka završetka. Kada ova funkcija vrati 0, to znači da nisu pronađeni valjani podaci.



Sintaksa

Funkcija Serial.readBytesUntil() ima sljedeću sintaksu:





Serijski. readBytesUntil ( char terminator, char * pufer, veličina_t duljina ) ;

Parametri

Slijede parametri funkcije Serial.readBytesUntil():

  • Lik Terminatora: Znak na kojem će funkcija prestati čitati.
  • pufer: U međuspremniku serijski podaci za čitanje su. Dopušteni tip podataka je niz znakova ili bajtova.
  • duljina: Maksimalni broj bajtova za čitanje. Dopušteni tip podataka je int .

Povratak

Broj bajtova smještenih u međuspremnik.



Bilješke: U povratnim podacima funkcija Serial.readBytesUntil() odbacuje znak završetka iz toka podataka.

Primjer Arduino koda

Sljedeći Arduino kod objašnjava upotrebu Serial.readBytesUntil() funkcija:

poništiti postaviti ( ) {
Serijski. početi ( 9600 ) ; // Inicijalizirajte serijsku vezu s brzinom prijenosa podataka od 9600
}

poništiti petlja ( ) {
međuspremnik bajtova [ 5 ] ; // Definirajte niz bajtova za pohranjivanje ulaznih podataka
int numBytes = Serijski. readBytesUntil ( ' \n ' , međuspremnik, 5 ) ; // Čitanje dolaznih podataka sa serijske veze dok se ne naiđe na znak novog retka

ako ( numBytes > 0 ) { // Provjerite jesu li neki bajtovi pročitani
Serijski. ispisati ( 'Primljeni znak: ' ) ;
Serijski. pisati ( međuspremnik, numBytes ) ; // Ispis primljenih podataka na serijski monitor
Serijski. println ( ) ;
}
}

U funkciji setup() brzina prijenosa će uspostaviti serijsku komunikaciju.

U funkciji loop() prvo definiramo niz bajtova tzv 'pufer' . Ovo polje će se koristiti za pohranu dolaznih podataka pročitanih sa serijske veze.

Zatim pozivamo Serial.readBytesUntil() funkcija koja čita dolazne podatke sa serijske veze sve dok ne naiđe na znak novog retka ('\n'). Sljedeći argument je duljina međuspremnika koji će uzeti najviše 5 bajtova podataka odjednom.

Vraćeni bajt pohranjuje se u 'numBytes' varijabla. U slučaju da su primljeni podaci veći od duljine međuspremnika, podaci će biti prekinuti i poslani u sljedećem toku podataka.

Izlaz

Zaključak

The Serial.readBytesUntil() funkcija u Arduino programiranju čita bajtove iz serijskog ulaznog toka dok se ne primi određeni znak završetka. Funkcija daje ukupan broj pročitanih bajtova i pohranjuje ih u predviđeni međuspremnik. Pročitajte članak da biste saznali više o funkciji Serial.readBytesUntil().