Funkcija Serial.readBytesUntil() v programiranju Arduino

Funkcija Serial Readbytesuntil V Programiranju Arduino



Ko gre za programiranje z Arduinom, obstaja veliko funkcij, ki jih lahko uporabite za manipulacijo vhoda in izhoda. Ena od glavnih funkcij Arduino je Serial.readBytesUntil() , ki omogoča branje podatkov iz toka, dokler ni najden določen znak. Ta funkcija pomaga pri branju podatkov iz serijskih naprav, dokler ne najdemo zahtevanih podatkov.

Ta zapis poglobljeno prevaja funkcijo Serial.readBytesUntil(). Razpravljali bomo o tem, kaj je, kako deluje, in obravnavali kodo Arduino, ki pojasnjuje, kako jo uporabiti v kodi Arduino.

Serial.readBytesUntil()

Funkcija Serial.readBytesUntil() je del razreda Arduino Serial. Ta funkcija bere podatke iz toka, dokler ne najde določenega znaka ali največjega števila bajtov. Ko je najden znak ali največje število bajtov, funkcija preneha brati in vrne podatke, ki jih je prebrala.







Funkcija Serial.readBytesUntil() se zaključi, ko so izpolnjeni naslednji pogoji:



  • Ko funkcija zazna zaključni znak
  • Dosežena je določena dolžina medpomnilnika
  • Nastavljeni čas je potekel ali poteče čas

Ta funkcija ne vrne zaključnega znaka, vrne le podatke do zadnjega znaka pred zaključnim znakom. Ko ta funkcija vrne 0, to pomeni, da niso najdeni veljavni podatki.



Sintaksa

Funkcija Serial.readBytesUntil() ima naslednjo sintakso:





Serijski. readBytesUntil ( char terminator, char * medpomnilnik, velikost_t dolžina ) ;

Parametri

Sledijo parametri funkcije Serial.readBytesUntil():

  • Lik Terminatorja: Znak, pri katerem bo funkcija prenehala brati.
  • medpomnilnik: V medpomnilniku so prebrani serijski podatki. Dovoljeni tip podatkov je niz znakov ali bajtov.
  • dolžina: Največje število bajtov za branje. Dovoljeni tip podatkov je int .

Vrnitev

Število bajtov v medpomnilniku.



Opombe: V povratnih podatkih funkcija Serial.readBytesUntil() iz podatkovnega toka zavrže zaključni znak.

Primer kode Arduino

Naslednja koda Arduino pojasnjuje uporabo Serial.readBytesUntil() funkcija:

praznina nastaviti ( ) {
Serijski. začeti ( 9600 ) ; // Inicializirajte serijsko povezavo s hitrostjo prenosa 9600 baud
}

praznina zanka ( ) {
medpomnilnik bajtov [ 5 ] ; // Definirajte niz bajtov za shranjevanje dohodnih podatkov
int numBytes = Serijski. readBytesUntil ( ' \n ' , medpomnilnik, 5 ) ; // Branje dohodnih podatkov iz serijske povezave, dokler ne naletite na znak nove vrstice

če ( numBytes > 0 ) { // Preverite, ali so bili prebrani kateri koli bajti
Serijski. tiskanje ( 'Prejeti znak: ' ) ;
Serijski. pisati ( medpomnilnik, numBytes ) ; // Natisni prejete podatke na serijski monitor
Serijski. println ( ) ;
}
}

V funkciji setup() hitrost prenosa bo vzpostavila serijsko komunikacijo.

V funkciji loop() najprej definiramo polje bajtov, imenovano 'medpomnilnik' . To polje bo uporabljeno za shranjevanje dohodnih podatkov, prebranih iz serijske povezave.

Nato pokličemo Serial.readBytesUntil() funkcija, ki bere dohodne podatke iz serijske povezave, dokler ne naleti na znak za novo vrstico ('\n'). Naslednji argument je dolžina medpomnilnika, ki sprejme največ 5 bajtov podatkov naenkrat.

Vrnjeni bajt je shranjen v 'numBytes' spremenljivka. V primeru, da so prejeti podatki večji od dolžine vmesnega pomnilnika, bodo podatki zaključeni in poslani v naslednjem podatkovnem toku.

Izhod

Zaključek

The Serial.readBytesUntil() funkcija v programiranju Arduino bere bajte iz serijskega vhodnega toka, dokler ni prejet določen zaključni znak. Funkcija poda skupno število prebranih bajtov in jih shrani v predvideni medpomnilnik. Preberite članek, če želite izvedeti več o funkciji Serial.readBytesUntil().