PROMOS fórum

Další firemní SW => CW ovladače => Téma založeno: libor 04.10.2010, 05:12:12



Název: Zamrzání CW aplikace
Přispěvatel: libor 04.10.2010, 05:12:12
Moje aplikace v CW, která využívá vaše nové ovladače, tak "zamrzává". V případě špatné komunikace (nebo žádné - odpojený kabel) dochází k tomu, že panely se přepínají pomalu a celá aplikace je taková "přibržděná". Vypadá to, že se čeká na vypršení nějakého timeoutu. Pokud místo vašich ovladačů dáte dummy.dll (neprovádí se komunikace) jde to normálně. V čem je problém?


Název: Re: Zamrzání CW aplikace
Přispěvatel: libor 04.10.2010, 05:19:52
Vzhledem k tomu, že při volání rozhraní v ovladači z ConrolWebu nedochází k žádné prodlevě, tak jsem se dotázal přímo v Moravských přístrojích. Odpověď byla mimo jiné následující:

Citace
CW je dělaný tak, že po předání požadavku na kanál je jedno, jak dlouho se
komunikuje. Úplně normální stav je, že se zadají požadavky na velké množství
kanálů a ty "dotékají" postupně. Notifikují se callback procedurou ovladače
s hodnotou Finalized. Důležité je, aby interfacové procedury DLL ovladače
nebyly blokující (na nic se v nich nečekalo).

Když pošle ovladač požadavky na kanály tak na odpovědi nečeká a jede dál.
Pozor kanály v CW aplikaci ale nesmí mít nastavený parametr timeout (ten se
zadává buď globálně v sekci settings nebo v sekcích channels nebo přímo u
definice kanálů). Implicitně je tento timeout nastavený na 0, což znamená,
že se nečeká.

Problém vaší aplikace tedy s největší pravděpodobností bude nastavený timeout pro kanály (buď jednotlivě nebo skupinově). Nastavení tohoto timoeutu na 0 dosáhnete plynulý běh.

Druhou možností, kterou můžete v krajním případě využít, je tzv. asynchronní mód, který je popsán v nápovědě CW ovladačů.