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