Rozdiel medzi Arduino Serial.print () a Serial.write ()
Difference Between Arduino Serial
Najprv mi poviem o odoslaní.
Zadajte reťazec znakov do políčka na monitore okna Send Arduino IDE (tam sú číslice, písmená a symboly) a program postupne prevedie znaky v reťazci na kódy ASCII a odošle ich.
Analogicky zadajte „aA1 &“, potom sa budú postupne odosielať „97“, „65“, „49“, „38“ (prepočet tu a nižšie sú pravidlá ASCII). Funkcia arduino Serial.read () ukladá tieto štyri hodnoty do premenných, predpokladáme, že je to data [1], deta [2], data [3], data [4].
Ako príklad hovoríme o prijímaní a zobrazovaní údajov [1].
Ak je to Serial.write (data [1]), bude to vyzerať priamejšie, arduino priamo pošle dáta [1] späť, prijímajúci koniec sériového portu dostane 97, nájde znak zodpovedajúci 97 ako „a“ a zobrazí Ukáž nám. (Týmto sa tiež vysvetľuje, že na prvom obrázku nižšie je medzi OK a abc medzera a znak zodpovedajúci 0 by mal mať hodnotu null.)
Ak je to Serial.print (dáta [1]), bude to nepríjemnejšie, arduino rozloží '97' na '9' a '7', najskôr prevedie '9' '57', pošle na IDE a potom prevedie '7 od „do 55“, poslať na IDE. IDE dostalo '57' a '55', prepočítalo ich na '9' a '7' a ukázalo nám ich.
Testovací kód a bočný pohľad
Windows IDE verzie 1.8.9
byte data[3] byte count=1 void setup() { Serial.begin(9600) Serial.print('OK') } void loop() { while(Serial.available()>0) { data[count]=Serial.read() count++ delay(100) } count=1 delay(1000) Serial.print/write(data[1]) Serial.print(' ') Serial.print/write(data[2]) Serial.print(' ') Serial.print/write(data[3]) Serial.println(' ') }
Nasledujúce dva obrázky sú Yong ** Serial.write () Výsledky čísel a písmen si vytlačte osobitne
Používajú sa nasledujúce dva obrázky Serial.print () ** tlačia čísla a znaky osobitne
dátum : 2020.2.16