Virtual COM

TomoT Aqarel xp.robotika na gmail.com
Neděle Březen 10 15:32:57 CET 2019


Zdravím,

stejný problém jsem řešil před několika lety. Kromě detekce nově 
připojených/odpojených zařízení jsem potřeboval zobrazovat uživateli 
podrobnější informace o COM portu (Výrobce, popis zařízení, typ zařízení 
- HW COM port, Virtuální, ...).

Řešil jsem to použitím služby WMI (Windows Management Instrumentation) - 
ta je standardní součástí systému. Knihovny pro práci s WMI jsou 
součástí .NETu - namespace System.Management. Pomocí dotazů podobných 
SQL můžete dostat třeba seznam všech COM portů včetně vlastností, které 
vidíte v Device Manageru. Kromě toho si můžete vytvořit trigger na 
určité události - připojení/odpojení COM portu - WMI vytvoří eventu, na 
kterou můžete jednoduše reagovat ve vašem kódu.

Já pak pomocí WMI implementoval funkci auto připojení a otevření COM 
portu - tedy pokud někdo odpojil převodník z počítače a pak byl připojen 
zpět, aplikace byla schopná automaticky znovu otevřít COM port. 
Fungovalo to bez ohledu zda-li se změnilo číslo COM portu (koukal jsem 
na ID zařízení a ne na číslo COM portu).

Spolehlivě mi to fungovalo pro různorodé zařízení - HW COM porty, 
virtuální COM porty (FTDI, ), COM0COM, ... což při při práci s registry 
se říct nedalo...

Co mi vadilo na WMI tak byl dlouhý start služby a zpracování dotazů 
trvalo také dost dlouho - velmi to záleží  jaké a jak podrobné informace 
budete potřebovat.

Na seznámení s WMI je perfektní aplikace 
https://archive.codeplex.com/?p=wmie která vám přímo dokáže vytvořit 
ukázkový kód s dotazem.

Každopádně doporučuji v aplikaci implementovat funkci, která zavře COM 
port, jakmile detekujete že zařízení není odpojeno. Po opětovném 
připojení, bude mít zařízení přidělený stejný COM port (většinou).

S pozdravem Milan

Dne 10.3.2019 v 11:47 Martin Locker napsal(a):
> Zdravím,
>
>
> lze nějak detekovat v aplikaci, resp. ošetřit násilné odpojení USB zařízení (vytažení kabelu), které funguje jako Virtual COM?
> Zjistil jsem, že v mé aplikaci (C#) to samozřejmě spadne na přístupu k portu, ale co je horší. Ani po připojení zařízení se to nevzpamatuje, v původním usb portu to již není win detekováno. V jiném usb se to ale najde. Fungovat to začne v daném portu až po restartu win7.
> Tedy:
> 1. jak to rozumně ošetřit v aplikaci, aby to nespadlo?
> 2. jak zajistit, aby to windowsy pro opětovném připojení do původního portu detekovaly?
>
>
> Díky za pomoc
>
>
> Martin L.
>
>
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list




Další informace o konferenci Hw-list