[elektro] windows gond
Nemeth Tibor
nemeth.tibor798 at t-online.hu
Sun Nov 29 21:03:16 CET 2015
Szia!
Köszönöm az ötleteket.
Üdv.
Németh Tibor
2015.11.27. 00:31 keltezéssel, Orbán Árpád írta:
> Szia!
>
> Szerintem lehet eseménykezelőket egymásba ágyazni (de nem vagyok benne
> biztos), mert mindegyik a főszálban fut. A TTimer az már felvet kérdéseket.
> Nálad a hibát talán az is okozhatja, hogy olyankor is belefut valamelyik
> eseménykezelőbe, amikor csak pl. a form ki- vagy bekerül a
> fókuszból/fókuszba?
>
> Válaszd szét a vezérlő control-okat (eseménykezelőjüket) a hardvert
> vezérlő kódtól.
>
> Használj egy állapotgépet a hardver vezérlésére, és a kontrol ezt az
> állapotgépet piszkálja szabályzott keretek között. Pl. ha automata módon
> megy a folyamat, akkor az x-edik állapotba kerüléssel indul egy Timer,
> ami ha lejár, egy változót átállít az eseménykezelőjében. Az állapotgép
> a timer futása alatt végig x-edik állapotban marad, és ha ez a változó
> átállítás megtörtént (lejárt a timer), akkor kerül át egy y-odik
> állapotba, mellesleg kapcsolgatja a hardvert.
> Olyan állapotgépet írj, amelyik minden körülmények között visszatér a
> hívójához miután egy részfeladatot elvégzett (egy részfeladatban soha
> nem lehet várakozás), így beteheted egy sűrűn futó (pl. 50 ms) TTimer
> eseménybe a hívását. Nekem így hibamentesen fut egy soros porton
> kommunikáló program, mely a kommunikációt ilyen TTimer eseményben futó
> állapotgépben végzi, a főprogram csak annyit lát, hogy van vett csomag,
> vagy indít egy csomag küldést, a többit az állapotgép végzi.
>
> A Control-okon keresztüli vezérlésre visszatérve, a Te példádnál
> maradva, az A RadioGroup csak akkor állítsa az állapotgépet, ha nincs
> letiltva. Ha le van tiltva, akkor az állapotgép eseményei állítják az A
> RadioGroup-ot. Így lehet egy kölcsönösen kizáró feltételrendszert
> csinálni, nem fog összeakadni.
>
> Félek, hogy ennél többet csak a konkrét feladat/kód ismeretében lehet
> mondani...
>
> Üdv:
> Árpi
>
>
> 2015.11.22. 22:15 keltezéssel, Nemeth Tibor írta:
>> Hali!
>>
>> Már megint az a gondom, hogy nem értek a windowshoz.
>>
>> Egyszerű kütyü, delphiben,az A jelű RadioGroup elemeit kattintgatva
>> juzer kézi vezérelhet.
>> Vannak automatikus feladatok is, ekkor a B jelű RadioGroup egy elemét
>> juzer kiválasztja, ekkor A jelű tiltásra kerül és egy timer a B jelű
>> állapotától függően állítgatja A jelű itemindexét, annak
>> eseménykezelőjén keresztül vezérelve a kütyüt, mint kézi üzemben.
>>
>> A lényeg, hogy a RadiGroup OnClick eseménykezelője akkor is lefut, ha
>> nem egerészünk, hanem itemindexet állítunk.
>>
>> Szinte tökéletesen működik, de bár ritkán, de mégiscsak megengedhetetlen
>> gyakorisággal, előfordul, hogy bárhol a program ablakban kattintva (nem
>> A-n és nem B-n) lefut A vagy B eseménykezelője, kattannak a relék,
>> elindulnak motorok, hw nélkül lehet észre sem venném. Valóban az
>> eseménykezelők futnak le mert ha töréspontot állítok rájuk, azon
>> elakadnak. Ha nem kattintgatok, tökéletesen fut.
>>
>> Ha eddig zavaros is, de most a kérdés:helyes-e ha
>> Timer eseménykezelője állítva A vagy B itemindexét, elindítja annak
>> eseménykezelőjét és az esetleg B vagy A (a másik) eseménykezelőjét?
>> Szabad-e eseménykezelőket egymásba ágyazni?
>> Mivel alapvetően jól működik, úgy sejtem, szabad, csak vannak kritikus
>> pillanatok, amikor ez szerencsétlenséget okoz. Ha ez a sejtés igaz, mi
>> az amit meg kell várni egy itemindex átállítása, vagyis az eseménykezelő
>> behívása előtt? Idő van, tudok várni, ha tudom mire. Olyasmi lehet ez
>> mint amikor külön szálból synchronize-n keresztül érhető csak el a fő
>> szál objektuma.
>>
>>
>> Előre is köszönettel:
>> Németh Tibor
>>
>>
>>
>>
>>
>>
>> -----------------------------------------
>> elektro[-flame|-etc]
>>
>
> -----------------------------------------
> elektro[-flame|-etc]
>
> -----
> A(z) üzenetben nem található vírus.
> Ellenőrizte: AVG - www.avg.com
> Verzió: 2016.0.7227 / Vírus adatbázis: 4460/11076 - Kiadás dátuma: 2015.11.27.
>
More information about the Elektro
mailing list