DDE — Dynamic Data Exchange — je protokol definovaný firmou Microsoft pro spolupráci aplikací prostřednictvím výměny dat a povelů.
DDE Client ovladač pro Control Web je obecným ovladačem systému a platí pro něj stejná pravidla jako pro ostatní ovladače. Ke komunikaci jádra systému Control Web s ovladačem slouží uživatelsky libovolně definovatelné kanály. Každý kanál realizuje napojení s definovanou položkou přes DDE spojení. Protože položky mohou obsahovat více dat, lze mapovat více kanálů jako blok na jedinou položku. Bloky mohou být libovolně vnořené.
Control Web & DDE
DDE Client ovladač podporuje výměnu dat jednosměrně (vstup nebo výstup) i obousměrně. Komunikace mohou být vyžádané nebo nevyžádané, problematika bude vysvětlena v kapitole Způsoby dynamické výměny dat.
Ovladač můžete konfigurovat pomocí konfigurační aplikace DDECONF.EXE nebo textově přímou modifikací parametrických souborů.
Konfigurační aplikace pro DDE ovladač
Aplikace je vybavena dvěmi plochami. Levá část zobrazuje hierarchii definovaných kanálů ve stromu, pravá část zobrazuje různé údaje — společné parametry ovladače, parametry zvoleného kanálu nebo bloku, případně seznam chyb detekovaných při načítání existujícího parametrického souboru.
Význam tlačítek nástrojové lišty:
DDE je komunikací typu client-server. Propojení aplikací přes DDE je jednosměrnou aktivitou ze strany clienta, který otevírá spojení s definovaným tématem. Pro zahájení spojení je nutná znalost následujících parametrů:
Oba tyto parametry lze zadat v záložce "Služba".
Konfigurace ovladače — záložka "Služba"
Spojení může být ze strany serveru přijato nebo zamítnuto. Spojení se nemusí podařit také z důvodu nepřítomnosti požadovaného serveru. DDE Client ovladač dokáže v takovémto případě požadovaný server (tedy aplikaci, která je DDE serverem vybavena) spustit.
Sekce "Spustit server" definuje 3 parametry. Tlačítko výběru "Povolit spuštění serveru" povolí ovladači při neúspěšném pokusu o spojení se serverem spustit aplikaci daného serveru. Editační řádek "Úplná cesta a název aplikace" určuje, který program bude spouštěn. Parametry spouštěného programu budou získány z obsahu editační řádky "Parametry aplikace".
Upozornění: Pokud je parametrem aplikace název souboru s dlouhou cestou, která obsahuje mezery, je vhodné tento parametr uzavřít do uvozovek.
Pokud zvolená aplikace DDE serveru je aplikací, která registruje v systému Windows obsluhu souborů určitého typu, nemusíte zadávat do editačního řádku "Úplná cesta a název aplikace" skutečný odkaz na spustitelný soubor. Stačí uvést odkaz ^.ext, kde místo ext uvedete skutečnou příponu (typ) souboru, který daná aplikace obsluhuje. Má-li být aplikace DDE serveru spouštěna s parametry, a jedním nebo více z parametrů je cesta se jménem souboru, nemusíte uvádět cestu plnou. Stačí použít makro %AppDir%, které je automaticky rozvinuto na úplnou cestu ke spouštěnému aplikačnímu programu. Pokud tedy spouštíte aplikační program 'C:\Technology\Tech.cwx' a jako parametr pro DDE server uvedete '%AppDir%\DDESrvParams\AtRun.abc', bude aplikaci DDE serveru předán jako parametr sestavený řetězec 'C:\Technology\DDESrvParams\AtRun.abc'.
Předtím, než dojde ke spuštění serveru, lze pokusy o spojení opakovat s definovaným časovým odstupem. Okamžitě po uplynutí časové prodlevy (timeout) posledního pokusu o spojení dojde ke spuštění aplikace serveru.
Schéma chování
Pokud se podařilo aplikaci serveru spustit, následuje opět stejný počet pokusů o spojení včetně prodlev mezi jednotlivými pokusy. Pokud se nepodaří spojení navázat, zůstává ovladač ve stavu rozpojení (disconnected). Tento způsob automatického ustavení DDE spojení není jedinou možností ovladače. Složitější, avšak v některých případech vhodnější postup, je popsán v kapitole Pokročilé technologie.
Konfigurace ovladače — záložka "Parametry"
Parametry popsaného schématu chování lze definovat v záložce "Parametry". "Timeout spojení" udává časovou prodlevu mezi jednotlivými pokusy o navázání spojení s DDE serverem. "Počet pokusů o spojení" udává, kolikrát se bude ovladač pokoušet o uzavření spojení předtím, než se pokusí zavést aplikaci DDE serveru. "Timeout obnovení spojení" udává nejdelší dobu, po kterou zůstává DDE Client neaktivní po pokusu o ukončení spojení se serverem, který neodpovídá na požadavky. "Počet neplatných pokusů" udává největší počet neuspokojených požadavků. Pokud server neodpovídá, bude ovladačem původní spojení ukončeno a po uplynutí doby definované parametrem "Timeout obnovení spojení" bude vytvořeno nové spojení včetně případného zavedení nové aplikace DDE serveru.
V sekci "Parametry operace" lze ovlivnit chování ovladače při vlastní dynamické výměně dat. Parametr "Timeout operace" udává časovou prodlevu mezi zahájením a ukončením dílčího přenosu dat. Pokud není přenos do doby vypršení prodlevy potvrzen, je přenos opakován tolikrát, kolik udává parametr "Počet pokusů". Pokud se nepodaří data přenést, operace je považována za nezdařenou a data označena jako nedosažitelná. Jakmile souvislá posloupnost neúspěšných komunikací dosáhne hodnoty parametru "Počet neplatných pokusů", dojde automaticky k odpojení DDE ovladače od serveru. Následný pokus o získání dat způsobí rozběhnutí procesu připojování k serveru.
Sekce "Různé" ovlivňuje doplňková nastavení ovladače. Pokud je tlačítko volby "Povolit kolizi ovladače" zamáčknuté, ovladač informuje jádro systému Control Web o nezdařených přenosech. Pokud není kolize ovladače povolena, je pouze věcí uživatele detekovat chyby a správně na ně reagovat.
Doporučení: Pokud nemáte dostatek zkušeností s používáním systému Control Web, povolte tento parametr a přenechte zpracování chyb na jádru systému.
Parametr "Desetinné znaménko" udává znak, kterým bude nahrazena standardní desetinná tečka při textové výměně číselných dat. Parametry "Hodnota pro log. 1" a "Hodnota pro log. 0" jsou použity při konverzi dat typu boolean. Logická 1 a 0 budou reprezentovány hodnotami, uvedenými těmito prametry.
Záložka "Parametry bloku" obsahuje popis oddělovačů používaných při blokových komunikacích, kapitola Parametry bloku.
Konfigurace ovladače — záložka "Parametry bloku"
V záložce "Vykonávání" můžete nastavit maximální počet současně odbavovaných komunikací. Standardně používejte 1 požadavek, protože ne každý DDE server podporuje paralelní zpracování požadavků od jednoho clienta. Pouze pokud jste si jisti, že vámi používaný server není omezen na zpracování pouze jednoho požadavku a dokáže bezchybně přijmout a odbavit více požadavků, můžete zvýšit výkon vaší aplikace povolením více současných požadavků. Nezapomeňte, že pokud pracuje na jednom počítači více DDE clientů, může tato volba způsobit nadměrnou spotřebu systémových prostředků a v důsledku také omezit reálnou datovou propustnost komunikujících komponent.
Doporučujeme pro jeden DDE ovladač nastavit nejvíce 5 současných požadavků, pokud pracuje pouze tento jeden ovladač na jednom počítači sám. Pro 1 - 4 DDE ovladače je vhodné povolit nejvíce 3 současné požadavky, pro více současně pracujících ovladačů doporučujeme používat vždy jednoduchou výměnu.
Upozornění: Předchozí doporučení nepramení ze žádného funkčního omezení DDE Client ovladače systému Control Web, v principu může ovladač zahájit libovolné množství komunikací v jeden okamžik. Důvod je zcela jiný, daný principem vlastního protokolu DDE, kdy výměna probíhá přes sdílenou paměť, která je v současných systémech Windows omezena.
Konfigurace ovladače — záložka "Vykonávání"
Každý definovaný kanál ovladače může být propojen s daty jiné aplikace. Propojení je realizováno na základě znalosti názvu dat, tzv. položky (item). Pojmenování položek dat aplikace DDE serveru může být definováno tvůrcem dané aplikace nebo je parametrizovatelné. Řada aplikací, jako např. Microsoft Excel, připouští oba způsoby, tedy využití jak předdefinovaných názvů, tak i pojmenování vlastní. Implicitní názvy položek bývají zveřejněny výrobcem v dokumentaci. Dalším zdrojem informací o DDE výměně dat jsou některé odborné publikace, např. Windows 95 Resource Kit. V případě použití DDE serverů průmyslových zařízení je popis pojmenování a konfigurace nedílnou součástí dokumentace.
Příklady pojmenování:
Ke konfiguraci kanálů ovladače je určena pravá plocha konfigurační
aplikace. V levé části označte kanál, jehož paramatry chcete změnit a
stiskem tlačítka "Vlastnosti" — —
zobrazíte v pravé části záložku s parametry.
Konfigurace kanálů
Popis nástrojové lišty:
Sekce "Kanál" obsahuje základní informace o aktuální položce seznamu kanálů. Editační řádek "Kanál" udává logické číslo právě editovaného kanálu ovladače. Pokud číslo uvedené ve druhém editačním poli tohoto řádku není stejné, potom lze modifikovat parametry více kanálů současně. Tuto možnost využijete zejména při vytváření nové konfigurace, kdy potřebujete vytvořit najednou více kanálů se stejnými nebo podobnými vlastnostmi. Volba "Přepsat existující" způsobí přepsání celé množiny kanálů bez dotazu, počínaje kanálem, jehož číslo je uvedeno v prvním editačním poli, a konče kanálem, jehož číslo je uvedeno ve druhém editačním poli. Položka "Typ" udává datový typ kanálu, položka "Směr" jeho orientaci, obojí podle konvencí systému Control Web. Na editačním řádku "Jméno položky" je uveden symbolický název DDE položky serveru, se kterou bude probíhat výměna dat editovaného kanálu nebo množině kanálů.
Sekce "Kanál"
Sekce "Interakce" definuje způsob výměny dat. Tlačítko volby "Poslat jako položku" slouží ke změně formátu zasílaných zpráv. S tlačítkem lze pracovat pouze tehdy, pokud je kanál výstupní a typu string. Následující obrázek vlevo zobrazuje běžný způsob výměny dat, kdy identifikace položky obsahuje neměnný název a datová část odpovídá obsahu kanálu. Obrázek napravo odpovídá situaci, kdy byla nastavena volba "Poslat jako položku". Identifikace položky je proměnná a odpovídá textovému obsahu kanálu, zatímco datová část zprávy zůstává nevyužita.
Sekce "Interakce" — výstup, typ string
Volba "Reagovat na změnu dat serveru" způsobí, že pokud dojde k samovolné změně dat (z pohledu systému Control Web) na serveru, bude o této skutečnosti ovladač informován. Volba "Obdržet data okamžitě" způsobí při změně dat na serveru okamžité odeslání nových dat. Pokud tato volba není označena, ovladač registruje skutečnost změny dat, ale nedojde ke změně hodnoty na kanálu. Reakcí na tuto změnu může být například pozdější čtení kanálu (ve vhodnějším okamžiku nebo z jiných důvodů). Více informací o výměně dat je v kapitole Způsoby dynamické výměny dat. Volba "Nepožadovat data ze serveru" způsobí, že při čtení kanálu nedojde k výměně dat se serverem. To má význam pouze tehdy, pokud client dostává data ze serveru bez požadavků. Tato volba je proto aktuální jen tehdy, pokud jsou dvě předchozí označeny.
Sekce "Interakce" — vstup
Při blokové komunikaci dochází k výměně balíku dat. Ne všechny DDE servery podporují tento způsob komunikace. Pokud jej však podporují, je dobré toho využít, neboť poměr efektivity mezi blokovou výměnou dat a tradiční je přímo úměrný množství položek spojených do jednoho bloku. Jinými slovy, předat 10 hodnot v bloku zabere 10-krát méně času než předat 10 samostatných hodnot.
Běžným způsobem komunikace dochází k výměně jedné hodnoty mezi serverem a clientem. Při textových komunikacích numerických údajů lze vyměňovat více hodnot. Data jsou ve zprávě uspořádána následně:
[<nepovinný separátor>] <hodnota 1> <separátor> <hodnota 2> <separátor> ... <separátor> <hodnota n>
DDE Client systému Control Web dokáže takto uspořádaná data rozdělit do více kanálů, které jsou součástí bloku. Některé DDE servery dokáží zpřístupňovat i jednotlivá data, která jsou součástí bloků. Následující obrázek znázorňuje strukturu bloku RegArray_M. Pokud bude po serveru požadována položka "RegArray_M", budou odbavena veškerá data. Pokud bude po serveru požadována položka "RegArray_M.rpm" (jako oddělovač položky bloku je zde použita tečka), odbaví server jen jednu položku.
Ukázka bloku
Parametry pro blokovou výměnu se nastavují na dvou místech. Nejdříve je potřeba nastavit společné vlastnosti, které souvisejí s konkrétním DDE serverem a jsou pro všechny datové výměny společné. Označte kořen (nejvýše položenou položku označenou "DDE Client" ve stromu — levá plocha. Zvolte "Vlastnosti" a přepněte se do záložky "Parametry bloku". V sekci "Oddělovače" jsou dva parametry, společné pro všechny blokové výměny.
"Oddělovač položek" — jestliže váš DDE server podporuje výměnu dat umístěných v rámci jednoho bloku, pak jsou tato data identifikována hierarchicky, tedy odkaz na jednotlivé položky bloku je složen ze jména bloku, oddělovače a jména položky. Zvolte tedy patřičný oddělovač.
Upozornění: Ačkoliv váš DDE server podporuje výměnu dat v blocích, neznamená to, že dokáže identifikovat jednotlivé položky bloků zmíněným způsobem, tedy hierarchicky.
Poznámka: DDE Client ovladač systému Control Web podporuje pouze hierarchický způsob identifikace položek v rámci bloku. Pokud DDE server umožňuje identifikaci položek bloků jiným způsobem a vaše aplikace vyžaduje, aby mimo blokový přenos byla data vyměňována i po položkách bloku, musíte nadefinovat pro tento účel nové kanály (jednoduché, tedy ne bloky).
"Oddělovač dat" — separátor sloužící k oddělení jednotlivých hodnot.
Při konfiguraci kanálu typu blok můžete v sekci "Parametry bloku" zvolit způsob, jakým bude zacházeno s daty. Pokud zvolíte "Vždy celý blok", pak při požadavku na alespoň jeden kanál patřící bloku proběhne výměna vždy celého bloku. Volba "Vždy po položkách" způsobí, že s blokem nebude nikdy zacházeno jako s blokem, ale každá z položek bude vyměňována samostatně, podle potřeby. Volba "Volitelně" je kombinací předchozí způsobů. Zvolte "Práh". Tato hodnota definuje, za jakých podmínek bude provedena výměna celého bloku (pokud počet požadavků na položky bloku dosáhne nejméně hodnoty "Práh"), respektive kdy bude provedena výměna po položkách (počet požadavků nedosáhl hodnoty "Práh").
Sekce "Parametry bloku"
Důležité upozornění: Pokud je součástí definice bloku další blok, uplatňují se všechny zmíněné principy hierarchicky. Pozor proto na volbu "Nepožadovat data ze serveru" (advisedatanoread), kterou pokud zvolíte u bloku, bude uplatněna na všechny položky bloku.
Tato kapitola objasňuje principy výměny dat mezi DDE Client ovladačem a libovolným DDE serverem. Možnosti výměny dat souvisí s definicí kanálu a jeho vazbou na DDE server. Problematika definice kanálu je objasněna v kapitole Definice datových DDE propojení v popisu sekce Interakce.
Důležité: DDE Client ovladač nepodporuje nepotvrzované výměny dat. Všechny operace musí být vždy potvrzeny jak ze strany serveru, tak i ze strany clienta. Jedinou výjimku tvoří zprávy odeslané DDE serverem nepožadující potvrzení.
Model vyžádané výměny dat postihuje dva základní stavy: požadavek na čtení dat, který je způsoben čtením kanálu DDE Client ovladače z aplikace, a požadavek na zápis dat způsobený zápisem hodnoty na kanál ovladače. Společným rysem vyžádané výměny dat je prvotní aktivita ze strany DDE Client ovladače.
Vyžádaná výměna dat
Tento způsob výměny dat je typický prvotní aktivitou ze strany DDE serveru. Client obdrží informaci o změně dat na serveru, případně i data vlastní. Z hlediska běhu aplikace v systému Control Web se jedná o asynchronní přenos, DDE Client ovladač vždy generuje výjimku ovladače.
Upozornění: Počet generovaných výjimek ovladače nemusí odpovídat počtu přenesených informací. Jedna výjimka může informovat o více uskutečněných přenosech. Podrobnostmi zpracování výjimky se zabývá kapitola Pokročilé technologie.
Nevyžádaná výměna dat
Výpadkem spojení se rozumí přerušení spojení mezi DDE Client ovladačem a DDE serverem. K výpadku může dojít z několika příčin.
Pokud dojde ke korektnímu ukončení aplikace serveru (zavření okna, atp.), dojde ke korektnímu uzavření spojení mezi ovladačem a aplikací. Způsob chování ovladače je dán následujícími faktory:
Dojde-li k nekorektnímu ukončení aplikace serveru, ovladač není informován o ukončení spojení. Zůstává ve stavu připojení. Dále se řídí následujícími pravidly:
Tato kapitola je zaměřena na netypické přístupy včetně několika ukázek. Předpokládá znalost problematiky konfigurace DDE Client ovladače a jeho Query Interface rozhraní (kapitola Seznam Query metod ovladače).
Při klasickém použití DDE Client ovladače dochází k uzavření spojení s DDE serverem již při startu aplikačního programu. Tento přístup může být v řadě případů nevýhodný. Stejně tak může být nevýhodná nutnost existence DDE spojení za běhu aplikačního programu.
Řešení:
Ovladač je vhodné nakonfigurovat tak, aby nespouštěl automaticky aplikaci DDE serveru. Po startu aplikace dojde k pokusu ovladače o navázání spojení s DDE serverem. Pokud tento neběží, zůstává ovladač odpojen. Aplikaci je vhodné konstruovat tak, aby přístup na kanály DDE Client ovladače byl podmíněn existencí spojení. Jinak dochází k dalším zbytečným pokusům o navázání spojení a komunikaci. Navíc je doporučeno ihned po startu aplikačního programu zablokovat mechanismus automatického obnovení spojení pomocí DQMI metody reconnect_disable.
Aplikace může být vybavena prostředky pro spuštění aplikace DDE serveru ve vlastní režii, tzn. automatizovaně nebo na požádání obsluhy. Typickým řešením je využití DQMI ovladače v procedurách.
procedure RunDDEServiceAndConnect(); var b = boolean, false; res = integer, 0; i = integer, 0; begin system.DriverQueryProc( 'K1_drv', 'run_service', &res ); if res <> 0 then ... (* error: cannot run service *) stop; end; pause 2; (* wait for service *) system.DriverQueryProc( 'K1_drv', 'connect', &res ); if res <> 0 then ... (* error: cannot establish connection *) stop; end; b = false; i = 0; (* wait until connected or 4 second timeout over *) while (not b) or (i < 40) do system.DriverQueryProc( 'K1_drv', 'connected?', &b ); i = i + 1; pause 0.1; end; if not b then ... (* error: timeout, cannot establish connection *) stop; end; end_procedure;
V ukázce je použit cyklus while pro čekání na spojení. Timeout je vhodné mít ve správné relaci s konfigurací ovladače (zde 40 x 0,1 s = 4 s, a to by mělo přesahovat "Timeout spojení").
DDE Client ovladač generuje výjimku ovladače tehdy, pokud obdrží od DDE serveru, k němuž je připojen, zprávu o změně dat položky, se kterou je svázán některý z definovaných kanálů.
Změna dat na serveru je akcí, která může mít přímý vliv na chování aplikačního programu. Existují tři způsoby přístupu k problematice získání změněných dat. Tyto způsoby se liší velikostí časové prodlevy, po kterou client může pracovat ještě se starými daty. Prvním a nejméně efektivním způsobem je periodické čtení všech dat ze serveru, která se mohou změnit nezávisle na chodu aplikačního programu. Aktuálnost obsahu kanálů je tedy úměrná periodě čtení. Druhý a třetí způsob má společný rys — změna dat je detekována DDE serverem, který o změně informuje clienta. Druhý způsob je založen na principu přenosu informace o změně, zatímco třetí způsob přenáší zároveň s informací také změněná data.
Zdálo by se, že třetí způsob je nejvýhodnější, protože je nejvíce flexibilní. Při častých změnách dat serveru však dochází k přenosu velkého množství dat a to představuje velkou zátěž pro zacházení se systémovými prostředky. Vždy je výhodné zvolit vhodný kompromis a kombinovat veškeré dostupné techniky. Pokud bude aplikován druhý postup, je potřeba vytvořit v aplikaci mechanismus, který dokáže modifikovaná data získat, nejlépe ve vhodný okamžik zahájit čtení změněných kanálů.
program pg_channel_change_advise; driver_exception = K2_drv; procedure OnActivate(); var lc = longcard, 0; NewValue = real, 0; begin loop system.DriverQueryProc( 'K2_drv', 'exception_channel', &lc ); if lc <> 0 then (* channel changed *) system.DriverQueryProc( 'K2_drv', lc, &NewValue ); (* get channel value *) if lc = 200 then Meter100.SetValue( NewValue ); elsif lc = 201 then Meter200.SetValue( NewValue ); elsif lc = 202 then Meter300.SetValue( NewValue ); end; else (* done *) exit; end; end; (* loop *) end_procedure; end_program;
V případě, že aplikace nepoužívá DDE výměnu s různými servery najednou, lze v aplikaci používat jediný DDE Client ovladač, který bude z aplikace programově připojován a odpojován. Tato problematika byla komentována v bodě A. této sekce. Ve stavu rozpojení lze ovladači nastavit jiné parametry spojení.
procedure ChangeServiceAndTopic( NewService, NewTopic : string ); var lc = longcard, 0; s = string, ''; begin s = concat('service ', NewService ); system.DriverQueryProc( 'K3_drv', s, &lc ); if lc <> 0 then ... (* error *) stop; end; s = concat('topic ', NewTopic ); system.DriverQueryProc( 'K3_drv', s, &lc ); if lc <> 0 then ... (* error *) stop; end; end_procedure;
Dynamickými položkami se rozumí výměna dat na výstupních kanálech typu string, které jsou v definici označeny "Poslat jako položku". V tomto případě neprobíhá žádná výměna dat, DDE serveru je zaslána pouze položka — přímo obsah řetězcového kanálu. Tato technika není typická, nicméně řada DDE serverů takto umožňuje ostatním aplikacím ovlivňovat svou činnost.
DDE Execute rozhraní je ve Windows standardem pro řízení aplikací. Popis syntaxe je součástí bohaté literatury zabývající se problematikou programování ve Windows.
Rozhraní umožňuje sdělit jiné aplikaci požadavky, např. open — otevři soubor, print — vytiskni dokument, atp. Následující příklad názorně ukazuje, jak v aplikaci Microsoft Excel otevřít s pomocí DDE Client ovladače libovolný dokument — zde parametr procedury.
procedure ExecuteOpen( PathName : string ); var lc = longcard, 0; b = boolean, false; i = integer, 0; s = string, ''; begin system.DriverQueryProc( 'dde_excel', 'service EXCEL', &lc ); if lc <> 0 then ... (* error *)) stop; end; system.DriverQueryProc( 'dde_excel', 'topic system', &lc ); if lc <> 0 then ... (* error *) stop; end; system.DriverQueryProc( 'dde_excel', 'connect', &lc ); if lc <> 0 then ... (* error *) stop; end; (* wait until connected or 4 second timeout over *) b = false; i = 0; while (not b) or (i < 40) do system.DriverQueryProc( 'dde_excel', 'connected?', &b ); i = i + 1; pause 0.1; end; if not b then ... (* error: timeout, cannot connect *) stop; end; (* set 8 s timeout for open operation *) system.DriverQueryProc( 'dde_excel', 'timeout 80', &lc ); (* prepare execute command string *) s = concat( 'execute [open("', PathName ); s = concat( s, '")]' ); system.DriverQueryProc( 'dde_excel', s, &lc ); if lc <> 0 then ... (* error: execute failed *) stop; end; pause 0.2; (* wait *) (* disconnect *) system.DriverQueryProc( 'dde_excel', 'disconnect', &lc ); if lc <> 0 then ... (* error: disconnect failed *) stop; end;
Formát následujícího popisu vychází z implementace Control Web Driver Query Method Interface (DQMI). Rozhraní je přístupné prostřednictvím systémové OCL metody DriverQueryProc.
system.DriverQueryProc( 'jméno ovladače', parametr1, & parametr2 )
parametr1 a parametr2 jsou popsány pro každou metodu zvlášť, v popisu jsou odděleny čárkou
connect
[in] "connect", [out] result : number
Metoda způsobí připojení DDE Client ovladače k DDE serveru. Pokud je v ovladači povolena možnost spouštění serveru aplikaci při jeho nedosažitelnosti, způsobí tato metoda zavedení zadané aplikace v případě neúspěšného pokusu.
result nabývá následujících hodnot:
Pokud je na výstupu procedury signalizována úspěšná operace, znamená to, že požadavek byl ovladačem přijat. Neznamená to však, že došlo k úspěšnému navázání spojení. Operace způsobí pouze registraci požadavku, který je dále zpracováván nezávisle na běhu aplikace. Ke vlastnímu spojení může dojít později, což závisí na počtu pokusů o spojení, časové prodlevě, případně i době zavádění aplikace DDE serveru (viz kapitola Parametry spojení). Připravenost spojení může být ověřena query metodou connected?.
disconnect
[in] "disconnect", [out] result : number
Metoda ukončí existující spojení s DDE serverem.
result nabývá následujících hodnot:
Pokud je na výstupu procedury signalizována úspěšná operace, znamená to, že požadavek byl ovladačem přijat. Vlastní operace probíhá nezávisle na běhu aplikace, ukončení spojení může být ověřeno query metodou connected?.
execute
[in] "execute <command>", [out] result : number
Metoda slouží k předání požadavku přes DDE Execute rozhraní serveru. Syntaxe požadavků je přesně definována, zatímco vlastní povely předávané rozhraním včetně parametrů nepodléhají žádné konvenci. Metoda je určena výhradně pro pokročilé uživatele.
result nabývá následujících hodnot:
Pokud je na výstupu procedury signalizována úspěšná operace, znamená to, že požadavek byl ovladačem přijat. Vlastní operace (předání požadavku a reakce DDE serveru) probíhá nezávisle na běhu aplikace.
crash_enable
[in] "crash_enable", [out] result : number
Povolí generování zpráv o kolizích ovladače při neúspěšných operacích.
result nabývá následujících hodnot:
crash_disable
[in] "crash_disable", [out] result : number
Zakáže generování zpráv o kolizích ovladače při neúspěšných operacích.
result nabývá následujících hodnot:
run_service
[in] "run_service", [out] result : number
Metoda způsobí neprodlené zavedení DDE aplikace serveru, viz kapitola Parametry spojení.
result nabývá následujících hodnot:
topic
[in] "topic <name>", [out] result : number
Metoda nastaví téma DDE konverzace. Změnu je možné provádět pouze v situaci, kdy je ovladač rozpojen.
result nabývá následujících hodnot:
service
[in] "service <name>", [out] result : number
Metoda nastaví identifikaci služby DDE konverzace. Změnu je možné provádět pouze v situaci, kdy je ovladač rozpojen.
result nabývá následujících hodnot:
reconnect_enable
[in] "reconnect_enable", [out] result : number
Metoda povolí mechanismus obnovení spojení po výpadku včetně případného zavedení aplikace DDE serveru, pokud je toto povoleno.
result nabývá následujících hodnot:
reconnect_disable
[in] "reconnect_disable", [out] result : number
Metoda zablokuje mechanismus obnovení spojení po výpadku.
result nabývá následujících hodnot:
timeout
[in] "timeout <time>", [out] result : number
Metoda nastaví časovou prodlevu DDE operace (při výměně dat). Hodnota <time> udává čas v 1/10 s.
result nabývá následujících hodnot:
exception_channel
[in] "exception_channel", [out] result : number
Metoda vrací číslo kanálu, jehož data byla na DDE serveru modifikována nezávisle na chodu aplikace.
Upozornění: Podle parametrů kanálu (viz kapitola Definice datových DDE propojení, sekce Interakce) lze rozlišit dva případy. V situaci, kdy je pouze oznámena změna dat, může aplikace novou hodnotu získat čtením kanálu. Pokud součástí zprávy o změně dat jsou také data samotná, lze novou hodnotu kanálu získat pomocí query metody get_channel.
result nabývá následujících hodnot:
error_count
[in] "error_count", [out] errors : number
Metoda vrací celkový počet chyb DDE komunikace od spuštění aplikace.
connected?
[in] "connected?", [out] result : boolean
Dotazovací metoda vrací v result true, pokud je spojení s DDE serverem aktivní. Není-li ovladač se serverem spojen, návratová hodnota je false.
<number> — metoda get_channel
Poznámka: get_channel je pouze symbolické označení metody. Skutečná query metoda get_channel DDE Client ovladače je vyvolána pokaždé, když je typ parametru parametr1 číselný.
[in] channel : number, [out] value : number
Metoda vrací hodnotu kanálu. Tato hodnota je získána z interních struktur ovladače, volání metody nikdy nezpůsobí komunikaci. Typ parametru parametr2 musí odpovídat definici kanálu. Metoda nemá rozhraní pro návratový kód (výsledek operace). Operace se povede vždy, pokud je předchozí podmínka shodnosti datového typu splněna.
Formát parametrického souboru ovladače:
[server] name = <service name> topic = <topic name> monitor = <boolean> connect_attempts = <number> connect_timeout = <number> reconnect_attempts = <number> reconnect_timeout = <number> operation_timeout = <number> operation_attempts = <number> run_service = <boolean> service_path = <pathname and parameters> decimal_char = , | . true_text = <string> false_text = <string> driver_crash = <boolean> item_sep = <string> data_sep = <datasep> request_limit = <number> [channels] <number> = <type> <direction> [<attrib>] [timeout <number>] [threshold <number>],<item> pokud <type> = block: <item> —> <blockitem> [<blockitem>] item = <type> [<direction>] [<attrib>] [timeout <number>],<item> type —> boolean | shortcard | cardinal | longcard | shortint | integer | longint | real | string | block direction —> input | output | bidirectional attr —> item | advise | advisedata | advisedatanoread
Popis:
Popis atributů: