Arduino - funkce serialEvent()
David Obdrzalek
David.Obdrzalek na mff.cuni.cz
Středa Listopad 4 22:12:06 CET 2015
Máte ho u sebe určitě taky :-)
C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino\main.cpp
C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.cpp
občas radši kouknu, co se přesně v orloji děje...
D.O.
On 4 Nov 2015 at 22:00, Petr Zapadlo wrote:
> Děkuju, hlavně za ten kus z main.cpp ten dokumentuje jasně jak to je.
>
> Petr
>
> Dne 4.11.2015 v 21:57 David Obdrzalek napsal(a):
> > A ještě doplnění - ne to jen něco jako přerušení, ale přerušení to není,
> protože
> > když loop zatuhne a neskončí, tak se to nezavolá. Nejde to tedy použít pro
> probuzení
> > z umělého uspání uvnitř loop.
> >
> > D.O.
> >
> > On 4 Nov 2015 at 21:55, David Obdrzalek wrote:
> >> 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
> >>
> >>
> >> _______________________________________________
> >> HW-list mailing list - sponsored by www.HW.cz
> >> Hw-list na list.hw.cz
> >> http://list.hw.cz/mailman/listinfo/hw-list
> >
> >
> > _______________________________________________
> > HW-list mailing list - sponsored by www.HW.cz
> > Hw-list na list.hw.cz
> > http://list.hw.cz/mailman/listinfo/hw-list
>
> --
> 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