Arduino - funkce serialEvent()

David Obdrzalek David.Obdrzalek na mff.cuni.cz
Středa Listopad 4 21:55:14 CET 2015


Mě se zdá ten tutorial špatně(*), protože v main.cpp (tedy alespoň ve verzi co mám 
nainstalovanou) je tohle:
	
	setup();
    
	for (;;) {
		loop();
		if (serialEventRun) serialEventRun();
	}

a ten serialEventRun je v Hardware.cpp, kde to zavolá serialEvent() nebo 
serialEvent0() až 3() podle toho, kolik serialů na dané platformě je.

Čili dle mého nejlepšího svědomí a vědomí se zavolá vždycky po každém zavolání loop 
aj tak.        


(*) Teda ono to v tom tutoriálu vlastně podle mě není zásadně špatně, ale spíš 
zavádějící a to by tutorial být neměl, takže to nakonec je špatný tutorial :-) Ten 
serialEventRun() se v tomhle tutorialu  bude volat vždycky dvakrát, jednou na 
začátku loop a podruhé až to z loop vypadne ven. Tedy pokud to nebude platforma s 
víc seriákama, která bude mít sama od sebe definovaný serialEvent0, 1 a další.

D.O.

On 4 Nov 2015 at 20:44, Petr Zapadlo wrote:
> Přeji pěkný večer,
> 
> sice se obávám, že lehce rozpoutám slovní válku, ale teď je na hw-news 
> takový poklid.
> 
> V referenci k arduinu je popsána funkce serialEvent(). Je to v části 
> Comunication/Serial.
> Dle popisu to chápu tak, že když je nějaký znak v RX buffru, tak by mi 
> ji systém měl zavolat. (něco jako přerušení).
> https://www.arduino.cc/en/Reference/SerialEvent
> 
> Nicméně dívám se na  example k ní a ten mě parádně mate:
> https://www.arduino.cc/en/Tutorial/SerialEvent
> jednak tam píší, že musí být v loop() - to teda není moc jako přerušení, 
> když ji musím periodicky volat.
> Ale a to hlavně, v tom příkladu je normálně definovaná jako každá 
> uživatelská funkce.
> 
> Co jsem nepochopil? A jak to má správně fungovat.
> 
> 
> Díky
> 
> Petr
> 
> 
> 
> -- 
> Petr "Zapik" Zapadlo
> 
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list





Další informace o konferenci Hw-list