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