A Serial.flush () az arduino-ban

Új vagyok az Arduino alkalmazásban, és a következővel rendelkezem:

int delaynum; char cval[12]; void setup() { Serial.begin(9600); Serial.print("Enter Number"); Serial.flush(); int i=0; while(i<12) { if(Serial.available()>0) { char ch=Serial.read(); if(ch>="0"&&ch<="9") { cval[i]=ch; i++; } else { cval[i]=0; delaynum=atoi(cval); break; } } } } void loop() { Serial.println(delaynum); exit(0); } 

A kódkimenet a virtuális kenyérlapon: (i beírta 100-ot)

1-es kimenet

De amikor eltávolítom a Serial.flush() kimenetet, például (i beírtam 100-at)

2. kimenet

A kimenetre számítok:

Írja be a számot (be akarom írni 100-as szám a kimenet után)

100

Miért nem működik a kód?

Arduino IDE-t használok virtuális kenyérlemezzel (ATMega328p)

Megjegyzések

  • ez az emuláció hibája. A Serial.flush () csak arra vár, amíg az adatok teljesen elküldődnek.

Válasz

Nem tudom, mi a virtuális kenyérlap nem egy normál Arduino esetében a következőket tenné:
A Serial.flush () törli a puffert, és ehhez normális időre van szükség, várjon legalább 100 ms-ot, hogy újra írjon / olvasson a pufferbe.
Mivel a kód fut a telepítés során (csak egyszer), a soros nem érhető el, mivel még mindig pirul, és így az eredményed is.
Mivel a névbeállítás azt mondja, ezt csak a HW / SW beállításához szabad használni, futtatáshoz azonban nem. rutinok, mivel mindenféle furcsa eredményt kaphat.
Ha “\ n” más néven newline terminátorokat használ a kommunikációban, akkor folytathatja őket, és az öblítésre csak akkor lenne szükség, ha a kapcsolat megszakad, és újra el kell küldenie az adatokat.
SZERKESZTÉS

Waits for the transmission of outgoing serial data to complete. 

Ha karaktert küld, akkor azt egy pufferbe helyezi továbbítás céljából. Időbe telik az egyes karakterek elküldése, mert a sorozat lassú. Miután a pufferben van, automatikusan elküldi a háttérben, miközben a program azonnal továbblép a következő utasításra. Ez azért történik, hogy a program ne pazarolja az időt a karakterek küldésére várva.

A flush () egy mód arra, hogy megvárja annak elküldését, ahelyett, hogy azonnal továbblépne a felhasználóban. program.

Tehát a flush () meghívása után biztos lehet benne, hogy minden adatot elküldtek, és a puffer üres. Tehát nincs értelme abban az esetben, ha elhelyezte.

Megjegyzések

  • Meg tudná magyarázni részletesebben, és az Arduino ugyanazt a puffert használja mind a bemenethez, mind a kimenethez, vagy a soroshoz. >
  • Lásd a fenti szerkesztésemet. Kérjük, jelölje be elfogadottnak, ha rendben van
  • Tehát abban az esetben, ha elhelyezted, nincs értelme, miért? Az Arduino nem vár a beállítási funkcióban, és mi a megoldás ezt meg tudja magyarázni, kérem, új vagyok ebben.
  • Kérjük, olvassa el az Arduino.cc oldalon az basic101-et, itt nem tanítok, egy-egy problémát megoldunk
  • valahogy ez a válasz nem ' nem mond semmit a probléma megválaszolásához

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük