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