[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