Moravské přístroje, a. s., zdroj: https://www.mii.cz/art?id=737&lang=405, vytištěno: 30.04.2025 14:24:34
Hlavní stránka▹Podpora▹Dokumentace▹Ovladače pro Control Web | 27.5.2020 |
---|
Ovladač SMSDRV je určen pro příjem krátkých textových zpráv z mobilního telefonu do počítače a k odesílání krátkých textových zpráv z počítače do mobilního telefonu. |
Vlastnosti ovladačeOvladač SMSDRV je určen pro příjem krátkých textových zpráv z mobilního telefonu do počítače a k odesílání krátkých textových zpráv z počítače do mobilního telefonu. Využívá k tomu GSM modem nebo mobilní telefon s funkcemi modemu připojený na standardní sériové rozhraní počítače RS-232. Lze použít např. modemy M1, M20, TC35, MC35 od firmy Siemens, moduly od firmy Wavecom a jiné. Funkce modemu podporují také některé mobilní telefony, např. Siemens S25, řada 35 nebo Nokia 6210, Alcatel OT 500 a další. Formát zpráv může být buď PDU nebo text. Seznam sekcí:
Činnost ovladačeOvladač dokáže zaslat textovou zprávu (SMS) na zvolené telefonní číslo mobilního telefonu. Maximální délka zprávy je 160 znaků. Textové zprávy by neměly obsahovat znaky s háčky a čárkami, neboť norma GSM tyto znaky nepodporuje. Pro odeslání zprávy je nutno zapsat do ovladače číslo mobilního telefonu, text zprávy a nakonec zapsat hodnotu true na kanál č.8, jako povel k vyslání zprávy. Odeslání zprávy ovladač signalizuje výjimkou. Status výjimky říká, jestli byla operace úspěšná nebo jestli došlo k chybě. Příjem zpráv probíhá tak, že ovladač v pravidelných intervalech zjištuje, jestli modem nemá novou zprávu. V případě, že tomu tak je, zpráva a číslo telefonu, ze kterého byla odeslána se přečte a uloží do fronty ke zpracování. Pak se zpráva vymaže z paměti modemu a současně se vygeneruje výjimka od ovladače. Aplikace tuto výjimku zachytí některým virtuálním přístrojem a vyhodnotí. Nakonec musí aplikace opět výjimku od ovladače povolit buď zápisem hodnoty true na kanál č.2 nebo voláním procedury ovladače EnableException. Dojde-li během odesílání zpráv k chybě, ovladač opět vygeneruje výjimku do aplikace. Přestane-li modem odpovídat na dotazy ovladače, opět se vygeneruje výjimka. Parametry ovladačeČinnost a chování ovladače se dá ovlivnit nastavením jeho parametrů. Tyto parametry se zapisují do souboru (*.PAR), který se zadává v definici ovladače v aplikaci systému Control Web. Soubor parametrů je textový soubor, který je možno upravovat běžným textovým editorem. Parametry mohou být rozděleny do několika skupin - sekcí. Každá sekce má svoje jméno uvedené v hranatých závorkách a dále seznam několika parametrů tvořených jménem parametru oddělovacím znakem (rovnítko) a jednou nebo více hodnotami parametru. Ovladač SMSDRV používá sekce [comm] a [Settings]. Upozornění: U zápisu názvu sekcí a parametrů záleží na způsobu psaní velkých a malých písmen Parametry linkové komunikační vrstvy — sekce [comm]Linková komunikační vrstva představuje prostředek pro přístup na standardní sériové rozhraní počítače. Tato vrstva umožňuje mimo jiné sdílet jedno sériové rozhraní více ovladači. V systému Control Web je linková komunikační vrstva reprezentována dvěma DLL knihovnami ('CWXLINK.DLL' a 'CWCOMM.DLL'). Pro její konfiguraci slouží v souborech parametrů ovladače sekce [comm]. V této sekci je možno buď přímo definovat parametry sériové komunikace nebo uvést odkaz (přesměrovaní) na samostatný konfigurační soubor s parametry sériové komunikace. V případě přesměrování obsahuje sekce [comm] pouze jediný parametr — file: [comm] file=c:\cw\par\comm.par Struktura parametrů linkové vrstvy: [comm] file = <file> device = <comdevice> Pokud je definován parametr device a existuje sekce jména comdevice, budou konfigurační parametry přednostně získány z této sekce, jinak budou použity parametry přímo ze sekce [comm]. Povinné parametry: [comm] rx_frame_buffer = <N> tx_frame_buffer = <N> baudrate = <N> databits = <N> stopbits = one | 1 | oneandhalf | 1.5 | two | 2 parity = none | no | even | mark | odd | space cts_flow = true | false dsr_flow = true | false dtr_control = disable | low | enable | high | handshake | toggle | toggle_neg rts_control = disable | low | enable | high | handshake | toggle | toggle_neg dsr_sense = low | high rx_interchar_timeout = <N> rx_char_timeout = <N> | 0 rx_timeout = <N> | 0 tx_char_timeout = <N> | 0 tx_timeout = <N> | 0 Nepovinné parametry: priority = idle | low | below_normal | normal | above_normal | high | realtime mode = fullduplex | halfduplex pre_key = <N> hold_key = <N> rx_buffer = <N> tx_buffer = <N> tx_continue_xon_xoff = true | false tx_xon_xoff = true | false rx_xon_xoff = true | false xon_tresh = <N> xoff_tresh = <N> error_xlat = true | false discard_null = true | false xon_char = <N> xoff_char = <N> err_char = <N> eof_char = <N> evt_char = <N> Syntaktické kategorie:
Popis jednotlivých parametrů:
Hodnoty pro definici chování DTS a RTS (parametry rts_control a dtr_control):
Chování DTR/RTS v módech toggle/toggle_neg Upozornění: Parametry rx_interchar_timeout, rx_char_timeout a rx_timeout ovlivňují propustnost na vstupu. Zvýšením hodnoty rx_timeout lze dosáhnout zvýšení efektivity pro rozsáhlé přenosy dat (pozor na kapacitu vstupního bufferu!), ale dojde také k prodloužení prodlev při příjmu separátních bloků dat. Nulové hodnoty parametrů způsobí nastavení optimálních hodnot podle parametrů komunikace. Parametry tx_char_timeout a tx_timeout ovlivňují propustnost na výstupu. Zvýšením hodnot lze docílit vyšší efektivity pro rozsáhlé přenosy dat, zvláště při povoleném handshake. Příliš malé hodnoty mohou způsobit problémy při vysílání, včetně potenciálně velkého počtu neúspěšných pokusů o vyslání. Nulové hodnoty parametrů způsobí nastavení optimálních hodnot podle parametrů komunikace. Příklad definice parametrů sériové komunikace v souboru parametrů ovladače: [comm] baudrate = 57600 parity = none databits = 8 stopbits = 1 rx_buffer = 1024 tx_buffer = 1024 rx_frame_buffer = 1024 tx_frame_buffer = 1024 cts_flow = false dsr_flow = false dtr_control = high rts_control = high dsr_sense = low rx_interchar_timeout = 0 rx_char_timeout = 0 rx_timeout = 0 tx_char_timeout = 0 tx_timeout = 0 Parametry pro základní nastavení ovladače — sekce [Settings]V sekci [Settings] se zadávají základní parametry, které určují chování ovladače. Způsob zápisu jednotlivých parametrů sekce [Settings] je následující: [Settings] ComDriver = <LinkDll>, <ComId> InitString = <String> SMSCenter = <String> Timeout = <N> MaxExceptions = <N> ScanTime = <N> DelayTime = <N> ResetModem = true | false Mode = PDU | TEXT PassSMSCenter = 0 | 1 | 2 SendATZ = true | false Validity = true | false ReadSMSFrom = default | <String> IgnoreCOMFail = true | false PIN = <N> PlusPrefix = <String> Report = true | false
Popis jednotlivých parametrů:
Kanály ovladačePomocí kanálů ovladač předává aplikaci přijaté zprávy a odesílá zprávy na zadané telefonní číslo. Další kanály slouží ke zpracování výjimky ovladače a k identifikaci chyb.
Procedury ovladačeAplikace může volat ovladači určité procedury, pomocí nichž je možno řídit chování ovladače nebo získat důležité informace. Procedury ovladače jsou určeny pro rozšíření možností ovladače. Není bezpodmínečně nutné je používat, neboť duálně s nimi fungují některé kanály. Akce vyvolané voláním procedur jsou podstatně rychlejší, než stejné akce vyvolané zápisem resp. čtením kanálů. Volání procedur ovladače se děje prostřednictvím systémové procedury: core.DriverQueryProc( DriverName : string; Param1 : any; &Param2 : any ); Její parametry mají následující význam:
DriverName a Param1 se zadávají jako textové řetězce. Param2 je různého typu podle významu procedury. Param1 se uvádí jako procedura ovladače. Param2 bude dále uváděn jako parametr procedury. Přehled a význam jednotlivých procedur ovladače (parametr Param1)
Mapovací soubor ovladače a datové typyMapovací soubor obsahuje typy kanálů ovladače. Je to textový soubor, který se zadává při definici ovladače v aplikaci (*.DMF). Ovladač má pevnou množinu kanálů, takže tento soubor není nutno upravovat. Součástí instalace ovladače je soubor SMS.DMF, který je možno použít v aplikaci. Pokud se bude v dalších verzích ovladače počet kanálů zvětšovat, bude se měnit i mapovací soubor. Zpracování a stavy výjimek ovladačeJak již bylo naznačeno, výjimka od ovladače se generuje na základě různých událostí. Těmito událostmi může být přijatá zpráva nebo vznik chyby. Stav výjimky, který vrací kanál č.1 popisuje vzniklou událost. Správný mechanizmus zpracování výjimky od ovladače je následující. V aplikaci musí být definován objekt (virtuální přístroj), který má definován parametr driver_exception se symbolickým jménem tohoto ovladače. Nastane-li výjimka od ovladače, je tento přístroj aktivován. V rámci jeho činnosti je třeba vyhodnotit stav výjimky a podle toho vykonat další činnost. Důležité je nakonec zapsat na kanál č.2 hodnotu true nebo zavolat proceduru ovladače EnableException. Tím se povolí vyvolání další výjimky, jakmile nastane nebo pokud není fronta výjimek prázdná. Pokud aplikace výjimky nestíhá zpracovávat nebo je vůbec nezpracovává, přidávají se do fronty, jejíž maximální velikost je určena parametrem MaxExceptions v sekci [Settings]. Možné stavy výjimky od ovladače:
Chybové kódyNastane-li během činnosti ovladače chyba, vygeneruje se výjimka se stavem stError. K identifikaci chyby slouží kanál č.3, který vrací naásledující kódy:
Pomocí volání procedury GetErrorString je možno získat textový popis chyby. Příklady souborů DMF a PAR ovladačeSoubor *.DMF begin 1 real input 2 boolean output 3 real input 4 real input 5 real input 6 string output 7 string output 8 boolean output 9 string input 10 string input end. Soubor *.PAR [Settings] ComDriver = cwcomm, COM1 Timeout = 1000 MaxExceptions = 100 ScanTime = 5000 DelayTime = 5000 InitString = SMSCenter = Mode = PDU PassSMSCenter = 0 ResetModem = true IgnoreCOMFail = false PIN = 1234 PlusPrefix = 00 Report = true [comm] baudrate = 57600 parity = none databits = 8 stopbits = 1 rx_buffer = 1024 tx_buffer = 1024 rx_frame_buffer = 1024 tx_frame_buffer = 1024 cts_flow = false dsr_flow = false dtr_control = high rts_control = high dsr_sense = low rx_interchar_timeout = 0 rx_char_timeout = 0 rx_timeout = 0 tx_char_timeout = 0 tx_timeout = 0 |