Aktualizováno v říjnu 2019

      
 

   Virtuální sériový port ve Windows 10
 
Úvod

Níže popsanou problematiku jsem zařadil mezi užitečná témata svého webu, protože existuje opravdu obrovské množství aplikací, které byly v minulosti napsány pro použití se sériovým portem (RS-232), jsou rovněž v dnešní době stále psány. Existuje také obrovské množství zařízení, která sériový port mají. Např. můj Kenwood TS-2000, spousta mých měřáků, všechny starší přepínače antén, tunery atd. A ještě ho dlouho mít budou :-)

Existuje velké množství SW a HW produktů, které umí dostat sériový port z desktopu (konkrétně zde z Windows 10) na TCP server, který tok dat přesměruje na fyzický sériový port.

Vyzkoušené řešení

Na stránkách HW group najdete a můžete si stáhnout freewarový program, který jednoduše nainstalujete. Jeho obrovskou výhodou je, že jednoduše vytvoříte virtuální sériový port. Například COM9, jako na obrázku vpravo. Jediné, co musíte udělat, tak je vybrat číslo COM (zde COM9) a vyplnit správně IP adresu a číslo portu, kde naslouchá server, který umí směrovat bajty přijaté z virtuálního portu do fyzického portu, který má. Můj server byl laciný Elfin EW-10, popsal jsem ho tady.

Ve své aplikaci, např. v ovládacím programu stanice, pouze zvolíte číslo portu COM9, nastavíte obvyklé parametry, např. baudovou rychlost, počet bitů, stopbitů a paritu. A je hotovo. Aplikace si virtuální port otevře, posílá do portu bajt po bajtu, tedy svůj protokol a přijímá na tomtéž portu bajt za bajtem z druhého konce relace.

Výhody

HW VSP3 single je freeware. Tedy zadarmo. Jednoduše se instaluje, jednoduše se nastavuje a spolehlivě funguje. Funguje i ve spolupráci s programy nakreslenými např. pomocí prostředků Profilab Expert. Zde příklad přepínače antén:

Switch

HW group Virtual serial
Program není rovněž vázán na žádný HW. Stačí mu vyplnit IP adresu a port naslouchajícího serveru! Dovolím si upozornit na nesmyslný mýtus, že virtuální sériový port je jen ovladač, vztažený ke konkrétnímu HW. Ne, opravdu, NENÍ to tak. Ovladač HW je úplně jinde, na jiném zařízení, které má fyzický sériový port.
 
Nevýhoda

Jde o freewarové řešení. Posílám mnoho díků firmě a autorům programu. Nevýhodou tohoto řešení je možnost vytvořit pouze jediný virtuální port. V mnoha případech s takovým řešením vystačíme. Nevýhoda je zaplacena jednoduchostí a snadným nastavováním. Firma nabízí též víceportové řešení. To však není otevřené a je vázáno pouze na hardware a řešení dodávané společností HW group. Toto řešení jsem nezkoušel, zajímala mne jen otevřená řešení.
 
Poznámky

1. Na obrázku vpravo jsem ukázal, kde a jak je vidět ve Správci zařízení virtuální sériový port. Není mezi porty (COM a LPT), ale objeví se jako samostatná položka Virtual Serial Port (Eltima Software).

2. Vyzkoušel jsem toto řešení s celou řadou zařízení, včetně Kenwood TS-2000, včetně mých měřicích ústředen, přepínačů antén, anténních ústředen.

3. Také jsem dal dotaz na Microsoft fórum "Zeptejte se komunity". S upřímným cílem zjistit, jaká řešení používají uživatelé Windows. Vzápětí jsem tohoto kroku litoval.

První řádek první odpovědi byl, cituji: Toto je reklama, nebo ano? Reklamy mazeme! Nicméně, autor mi odpověděl podobně, jak jsem očekával, tedy konkrétním typem tzv. profi řešení, které obsahuje HW i SW.

Další odpověď jiného guru začínala slovy: "Nechápu proč by to mělo být součástí OS. Tyto SW nemají bez toho HW žádné opodstatnění, takže to že se dodávají jako ovladače k HW je jenom správně."
Přemýšlím, zda je pravda, to co Microsoft guru tvrdí. A vím, že nemá pravdu. Taková služba není ničím vázaná na HW, virtuální sériový port může běžet jen jako služba operačního systému, která umožňuje aplikacím komunikaci přes sériový port. Data, tj. bajt za bajtem by však neměla končit ve stoupě. V popsaném případě nekončí. Jsou posílána bajt za bajtem na TCP socket serveru, ten není vázán na žádný HW. Tedy data se posílají tam, kde jsou očekávána a zpracovávána. Ale proč se hádat s lidmi, kteří znají to své :-)

Správce zařízení
 
Musím v tomto okamžiku přiznat, že jsem si dovolil na Microsoft fóru napsat kacířskou myšlenku, zda by možnost vytvářet virtuální sériové porty neměla být standardní službou operačního systému, který už tak obsahuje celou řadu zbytečných funkcí, ale nemá ty základní, užitečné.  Na to jsem odpověděl po svém:

"Názor na to, zda má být služba součástí operačního systému, na kterou jsem se dotázal, máme a budeme mít určitě Ty a já rozdílný. Já rozhodně nepovažuji sériové rozhraní za mrtvé. Sériový port používá obrovské množství aplikací pro desktop. Komponenty pro programování jsou součástí např. Visual Studia od verze VS 2008, knihovny pro programování TCP socketu také. Sériový port umí transparentně celá řada technologií, např. Bluetooth. Vytváření virtuálních sériových portů určitě umí celá řada aplikací třetích stran. A já nevidím jediný důvod, proč by nástroj neměl být součástí operačního systému pro desktop, když už nám z HW vymizely rozměrné konektory Cannon, ale existují naprosto otevřené technologie, které jsou miniaturní, levné, snadno administrovatelné a hlavně transparentní, otevřené a mají ten sériový port. Proto jsem tuto vizi napsal na fóru, u kterého předpokládám, že jsou lidé, kteří dávají Microsoftu zpětnou vazbu. Možná však Microsoft o zpětnou vazbu nestojí, má své vize. Proto jsem se všem účastníkům fóra omluvil a dělám to znovu. Nemám zapotřebí kdekoliv obtěžovat."

Celá diskuze probíhala zde: https://answers.microsoft.com/cs-cz/windows/forum/all/virtu%c3%a1ln%c3%ad-s%c3%a9riov%c3%bd-port/fbc1e7ea-bab5-45bb-9950-0c319aa95ced

Ještě jednou se omlouvám svým čtenářům, pokud zde popisuju známa a banální řešení. Prostě zde popisuji jen a jen konkrétní a vyzkoušené nápady a mám radost, pokud budou komukoliv užitečné. A posílám poděkování všem, kteří píší užitečné aplikace pro desktopy.

Dodatek - už pouze několik postřehů

1. Stáhnul jsem též verzi programu, která umí více virtuálních portů. Šla nainstalovat. Verze je však určená jen pro propietární řešení HW group s konkrétním HW. Protože žádné takové zařízení nemám, nezkoušel jsem ani ten SW. Hlavní důvod však vidím v tom, že předpokládám, že výrobce bude šifrovat IP komunikaci a přenos nebude transparentní. Lidově - ze vzdáleného fyzického portu nepoleze nic nebo pouze jen jakási posloupnost nesmyslných bajtů.

2. Před instalací víceportové verze musíte odinstalovat původní jednoportovou verzi. Obdobně, před další instalací single COM verze musíte odtsranit multi COM verzi.

3. Při opětovné instalaci single COM se vyskytly při instalaci problémy. Nicméně, instalaci jsem dokončil, poté SW odinstaloval pomocí Revo Uninstaler, a to s hloubkovým prohledáním na všechny soubory, adresáře a záznamy v registru. Následně proběhla opětovná instalace korektně.

4. Při prvním spuštění a vytváření portu jsem pravděpodobně udělal chybu. Doporučuji po prvním spuštění dodržet tento postup:

- Otevřít záložku Settings, provést login a uložit nastavení do ini souboru.
- Potom lze jít na záložku Virtual Serial Port a vytvořit tam virtuální port. To znamená vybrat COM (já jsem vybral COM9) a vyplnit IP adresu (moje je 192.168.1.5) a nastavit port (8899). Zařízení s IP adresou nemusí být při vytváření virtuálního portu spuštěné.
- Port se vytvoří, program napíše Created a port se objeví ve Správci zařízení. Domníval jsem se, že vždy tak, jak jsem ukázal v tomto článku. Nemusí to však být pravda vždy. Teď, když píšu tento odstavec, tak vše zkouším s Win 10, build 1903, který jsem nedávno instaloval a virtuální port se mi objevuje mezi Porty (COM a LPT). Proč je to jednou tak a podruhé jinak, to netuším.

5. Vyzkoušel jsem všechna zařízení se sériovým portem, které jsem měl po ruce. Všechna fungovala. Včetně transceiverů Kenwood, včetně montáže astronomického dalekohledu, včetně programátoru jednočipových mikropočítačů. Spustil jsem i jednoduchý testovací program, který jsem ukázal zde (na černé obrazovce někde uprostřed). Bajty, které jsem odeslal, jsem vždycka spolehlivě přijal. Prostě se mi to líbí a líbilo by se mi to ještě víc jako služba operačního systému.

  

 
   
TU 73, Mira, ok1ufc