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čů. |