[elektro] C kerdes - macro szamlalo
Moczik Gabor
pm_levlista at progzmaster.hu
Wed Sep 23 19:39:43 CEST 2009
hg12345 wrote:
> Nem ez lenne a megoldás
>
> Kell egy header ami tartalmazza az ENUM definiciót
>
> typedef enum ŕ2D9indexID={ ID_A=0,ID_B, ID,_C } ID_t;
>
> Ezt ahová kell includolod, is mindent itt bővítesz.
Sejtette, hogy nem fog menni amit akarok, de közben kiderült, hogy talán nem
is kell. Inkább leírom az eredeti komplex problémát, biztos van itt aki
jobban vágja ezt.
Az egészre tekintsünk úgy, hogy ez jelen pillanatban egy 8 bites PIC-en kell
fusson, tehát nem lehet a világ végéig bonyolítani...
Eseményvezérelt rendszer készül, amolyan kooperatív multitask szerűség, bár
köze nincs hozzá. :-)
A főprogram annyit csinál, hogy egy végtelen ciklusban kiolvassa egy
globális eventq-ból az eseménykódot, majd meghívja a hozzá tartozó függvényt
ami valamit csinál, új eseményt generálhat, stb., de mindenképp vissza kell
térjen. A megszakítás rutin is lekezeli a maga nagysebességű problémáit, és
ha valami van (pl. billentyűnyomás) ott is keletkezhet esemény.
A probléma amit nem tudok OOP szemlélet szerint jól megoldani, hogy mindenki
csak a rá tartozó dolgokkal foglalkozzon. Pl. ahhoz hogy meghívjam az
esemény kezelő függvényt a main()-ben lévő ciklusnak tudnia kell az összes
létező eseményről és a hozzá tartozó függvényről.
Egy lehetséges verzió, hogy minden egység az inicializáció során
regisztrálja a saját eseménykezelőit, aminek a vége, hogy egy globális
tömbbe bekerül egy függvénycím. A main előkotorja a címet és meghívja. Innen
már az a bajom, hogy ez nem dől el fordítási időben, tele lesz a kód egy
csomó szükségtelen indirekt hívással és az ehhez szükséges tábla is sok
helyet foglal, arról nem is beszélve, hogy egy véletlen kis memória
korrupció a másvilágra sodorja a rendszert.
Egy másik (eddig a legelfogadhatóbb) ötlet, hogy minden egység rendelkezik
egy saját eseménykezelővel. Hátránya, hogy ekkor mindegyiken át kell hajtani
az üzenetet, mire valaki foglalkozik vele. Talán nem olyan lassú. És az a
probléma is fennáll még mindig, hogy az egész rendszeren belül egyedi
azonosítókat kell kiosztani...
Nahh, elfogadok minden építő jellegű kritikát. :-)
--
((( Móczik Gábor )))--((( E~mail: "pm-01" @AT "progzmaster" .DOT "hu" )))
((( Skype: moczik )))
More information about the Elektro
mailing list