Každý elektrotechnik, IT technik či vývojář, který kdy zkoušel nebo vyvíjel PC software pro řízení a komunikace s nějakým zařízením prostřednictvím RS-232 rozhraní se asi někdy potýkal s problémy jeho testování. Často totiž vyvstane požadavek na přísun konkrétních testovacích dat do řídícho programu z COM portu či naopak odchyt dat vysílaných do COM portu samotným PC programem. Zde je problém v tom, že pokud máte na PC jen jeden sériový COM port, který „obsadíte“ daným programem, který zkoušíte, již se nelze na něj zároveň připojit ve stejném PC jiným programem pro potřeby odchytávání dat nebo naopak jejich zasílání programu.
To můžete v praxi vyřešit buď dost neprakticky hardwarově nebo elegantně jen softwarově v rámci jednoho PC. V prvním případě musíte použít počítač se dvěma fyzickými COM porty, které vzájemně propojíte tzv. Null modemovým kabelem s překříženými vodiči Rx a Tx (případně doplnit jeden COM port nějakým RS-232/USB převodníkem) nebo využít dvou vzájemně propojené počítače se sériovými porty. V druhém případě, realizovaném čistě jen softwarově, to lze provést použitím virtuálních sériových portů a jejich softwarovým „propojením“, jako by jste kabelem propojily dva fyzické COM porty. Prostě se v PC vygenerují dva nové „virtuální“ nefyzické COM porty (například COM 10 a COM11), které se též virtuálně vzájemně propojí, takže data vstupující do COM10 budou vystupovat z COM11 a obráceně. Tak například virtuální COM10 navolíte a „obsadíte“ testovaným programem a virtuálně přiřazený COM11 například navolíte na monitorovací utilitě (RS-232 terminálu) pro sledování a vysílání dat z / na RS-232 (například Windowsovský program Hyperterminál, či velmi dobrý program Hercules bezplatně ke stažení na HW serveru apod.). Můžete tak v rámci jen jednoho PC například vysílat jakákoliv data jakoby seriovým kanálem do zkoušeného řídícího PC programu a následně sledovat jeho reakci, aniž by jste museli cokoliv hardwarově realizovat. Testovaný program nic nepozná, protože prostě jemu budou data přicházet z přiřazeného sériového portu COM10 a co se skrývá za ním již nezjistí.
Poslední otázkou zůstává najít PC prográmek, které takové virtuální porty vygeneruje a vzájemně virtuálně propojí. Velmi dobře fungující je utilita Virtual Null Modem od společnosti AGG, kterou jsem vyzkoušel.
Software Virtual Null Modem
Malý program „Virtual Null Modem“ slouží k jednoduchému vytvoření propojených dvojic virtuálních sériových COM portů pro výše nastíněné požadavky a to včetně možnosti si zvolit verzi a „propojení“ úplně bez handshakingu či s emulací několika možných režimů hardwarového handshakingu – viz následující možná zapojení:
Propojení dvou virtuálních COM portů bez handshakingu (vlevo) a zpětnovazebního handshakingu (vpravo).
Propojení dvou virtuálních COM portů s částečným (vlevo) a plným handshakingem (vpravo).
Také je možné program a tím i ty virtuální porty spouštět manuálně či automatiky po nastartování OS Windows (po nalogování uživatele nebo i okamžitě po načtení Windows nezávisle na přihlášení a odhlášení některého z uživatelů). Podporovány jsou Windows ve verzích XP, Vista i nejnovějšího provedení Windows 7. Díky tomu, že software při provozování vytvořených virtuálních COM portů využívá přímo ovladačů kernelu, je zajištěna téměř dokonalá emulace, kterou by ani náročné řídící softwary neměli rozeznat od reálných portů. V plné verzi programu lze také nastavovat (definovat) přenosovou rychlost.
Zahájení instalace programu a okno výběru instalačního adresáře.
Instalace je tradičně jednoduchá a skládá se potvrzení licenčních podmínek, umítění programu na harddisku (standardně složka v adresáři „Program files“) a zaškrtnutí informací, zda se má umístit spouštěcí ikona na plochu či i do spodní lišty rychlého spouštění. Další informace o tom, zda mám program startovat hned po zapnutí Windows či manuálně apod. se nastavuje až v samotném menu v programu, což je velmi dobré z pohledu pozdější snadné změny a ukazuje to na profesionalitu vývojáře tohoto softwaru, který nechává vše čistě na uživately. To se mi líbí.
Dále se program může hned spustit, není požadován žádný restart Windows (další ukázka kvalitně udělaného programu). Po prvním spuštění je nutné deaktivovat trošku otravnou animovanou nápovědu, co s programem dělat. Bohužel se spouští při každé novém spuštění programu. Pokud s RS-232 na PC již nějakou dobu pracujete, s ovládání programu nebudete mít problém.
Základní jsou prakticky dvě okna:
- „Virtual ports“ = nastavení vygenerování dvou nových vzájemně propojených virtuálních COM portů
- „Virtual Null Modem“ = správa již vytvořených propojených COM portů s možností nastavení typu spuštění
Například dle nastíněného použití v úvodu vytvoříme dva vzájemně propojené virtuální porty COM10 a COM11 v nejjednodušší variantě bez jakéhokoliv handshakingu. Aby vše bylo naprosto jasné, je zvolené nastavení emulace portů schématicky zobrazeno - viz obrázek níže.
Hlavní okno vytvoření dvou COM portů pro virtuální propojení a jejich nastavení.
Kliknutí na tlačítko „OK“ vše realizujeme a následně se objeví okno s zobrazením vzájemně propojené dvojce portů COM10 a COM11. Zde lze jak zpětně změnit nastavení jednotlivých virtuálních propojení, a tak definovat, jak se má program zachovat při vypnutí / zapnutí OS Windows. Praktické vytvoření i v rámci OS Windows můžeme zkontrolovat v ovládacím panelu Windows – viz obrázek níže:
Základní okno ukazující vytvořené a aktuálně provozované virtuální propojení COM portů s možností nastavení spuštění
Ukázka, že vytvořené virtuální COM porty se objeví i ve správci zařízení OS Windows.
Praktickou funkci jsem vyzkoušel s použitím ve Windows „vestavěného“ terminálu „Hyperterminál“. Otevřel jsem si zvlášť dvě okna, jedno nastavené na COM10 a druhé na COM11. Následně v terminálu COM10 napsaná a ASCII znaky odeslaná věta „prenos z COM10 na COM11“ se objevila v okně nastavené na COM 11 a obráceně napsaná věta „prenos z COM11 na COM10“ = důkaz, že vzájemná komunikace probíhá.
Ukázka funkce s využitím dvou oken sériových terminálů Hyperterminál.
Program „Virtual Null Modem“ je volně stáhnutelný v tzv. Trial verzi na stránkách výrobce – společnosti AGG – viz odkaz: www.virtual-null-modem.com. Není to tedy freeware, což však na jeho zajímavosti nic neubírá. Pro jednorázové použití postačuje 21 dní plného provozu i možnost vytvoření jen jedné propojené dvojce virtuálních COM portů. Licence na základní vezi stojí 36,- EURO + samozřejmě nějaké ty poplatky za bankovní převod. Firma vám pak pošle jen licenční kód, který zadáte do programu. Pokud to hodláte trvale používat v rámci firmy a pro pravidelného vývoje softwaru, tak to není zase tak moc. Co se stane s Trial verzí po uplynutí těch 21 dní, zatím není mi moc jasné (ta doba mi ještě neuplynula). Výrobce na stránkách nejasně mluví o vyskakování nějakého otravného okna, ale jak bude sám program dále fungovat není jasné. O tom Vás budu dodatečně informovat.
Základní vlastnosti programu Virtual Null Modem:
- pro rušení a vytvoření virtuálních portů není potřeba reset / reboot OS Windows
- v plné verzi je možné vytvořit neomezený počet virtuálních COM dvojic (třeba i COM250)
- vytvořené virtuální COM porty jsou plně nezávislé, lze je libovolně použít jako reálné COM
- realistická emulace COM portů (dle výrobce 99,9% software / aplikací nepozná rozdíl)
- přenos dat po virtuálních COM je rychlejší než přes externí null modemový kabel
- použitelnost pod OS Windows XP, Vista i Windows 7
- využívá ovladačů kernelu
- podporuje vlastnosti: WDM, WMI, Power Management, PNP
- v plné verzi možnost generování simulace reálných dat včetně přenosových chyb
- možnost též ovládání z příkazové řádky
DOWNLOAD & Odkazy
- Odkaz na stránku výrobce o programu "Virtual Null Modem" - www.virtual-null-modem.com
- Přímý odkaz na stáhnutí instalačního souboru programu - www.virtual-null-modem.com/download/vnullmod20.exe