[elektro] C program szervezése? Help

Janos Scheller scheller at t-online.hu
Fri Jun 11 19:31:01 CEST 2010


Én a következőket alkalmazom.
Tegyük fel van 10 modulom és egy központi ahol a main fut. A 10 modul 
nem látja egymást, semmilyen kapcsolatban nincsenek csak a main látja 
mind a 10-et. A main szinte csak az üzenet továbbítást és az esemény 
hívást végzi.

Minden modulnak van egy set_message és egy set_event függvénye. A main 
modulban is meg van ez. A main-on belül fut egy check_message és egy 
check_event. void main {check_message(); check_event()}; Más nincs is benne.
Inicializáláskor minden modul megkapja a főmodul set_event és 
set_message függvényének a címét. A set_message-en keresztül a modulok 
adatokat küldhetnek egymásnak, a set_event-en keresztül ha valamelyik 
modulnak feladata van beírja magát a main loop-ba és a neki beállított 
időközönként meg lesz hívva.
Megtervezem ki kinek küldhet adatot. Egy tömbben összeállítom a 
kapcsolatotokat.  Message[] = {(feladó1_címe, vevő1_címe), 
(feladó2_címe, vevő2_címe), stb} ebből a check_message tudni fogja ki 
kinek akar küldeni.
Jön egy megszakítás vagy valaki adatot akar küldeni, ekkor beírja magát 
a set_message-be (saját cím, adat cím, adat hossz). Ekkor a main 
függvényben levő check_message el fogja küldeni az adatot a megfelelő 
helyre, ami a Message tömbből olvas ki. Ha az adat át lett véve 
automatikusan törli a listából, nem lesz mégegyszer meghívva.
Ha valamelyik modult be kell kapcsolni beírja magát a set_event-be és az 
időt milyen sűrün legyen meghívva. set_event()függvény címe, idő pl: 
100ms). Ez a függvény addig kerül meghívásra amíg ki nem lövi saját 
magát a feladat befejezésével. clear_event(függvény cím amit ki akarok lőni)
Ha ki akarok hagyni egy modult, ki kell törölni a Message tömbből a 
hivatkozást, ki kell venni a header includot és ki kell venni az init 
részből azt, amikor átadom a fő modul event és message címeit az 
almodulnak. Ez összesen 3 törlés és a program garantáltan fordítható 
ill. linkelhető marad.
A modulok futásidőben lesznek csak összekapcsolva.


> Nagyon tehetségtelenül fogalmazok :-(
>
> Nem a program megírásával van problémám! (Néhány ilyen már működik, egy nagy ASM-ben forrásban, nincs linker)
>
> A program fordítási felépítésében vesztem el.
>
> Olyan megoldást keresek, ha egy fordítási egységet kiveszek a programból (nem fordítom és nem is linkelem ez a részt), akkor is fordítható és futtatható programot tudjak fordítani minimális ráfordítással.
>
> Gondolom olyat nem lehet írni, hogy ne kelljen hozzá nyúlni, de ez elképzelhető, hogy ennek az idejét minimálisra lehet csökkenteni.
>    
>

-- 
Scheller János	
scheller at t-online.hu



More information about the Elektro mailing list