Virtual COM
Martin Locker
locker na vosrk.cz
Pondělí Březen 11 19:43:16 CET 2019
Děkuji všem za podnětné rady. Už jsem se s tím nějak vypořádal.
Díky
Martin L.
>
> 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
>
>
> _______________________________________________
> 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