Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Daniel Semerák:10.9.2020 19:55

Zdravím.
Sice se mi nedaří vyřešit předchozí problém, tak bych rád vyřešil jiný.
Rád bych detekoval Popis a zobrazil si ho ve vedlejším TxtBoxu.

Zkusil jsem: Pod čarou je část dalšího pokusu, ale ani ta první ani ta druhá možnost mi nefunguje. :-(
Myslím si, že tam potřebuji nějak doplnit ComboBox výběru portů, abych propojil ten CmbBox a daný TxtBox, kde se mi bude zobrazovat jeho popis a to právě nevím, jak toho dosáhnout. :-(

private void GetSerialPort()
        {
            using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity WHERE Caption like '%(COM%'"))
            {
                var portnames = SerialPort.GetPortNames();
                var ports = searcher.Get().Cast<ManagementBaseObject>().ToList().Select(p => p["Caption"].ToString());
                var portList = portnames.Select(n => n + " - " + ports.FirstOrDefault(s => s.Contains(n))).ToList();
                foreach (string s in portList)
                    {
                        TxtPopisPortu.Text = s;
                    }
            }
            ObjectQuery oQuery = new ObjectQuery("Select * from WIN32_SerialPort");
            ManagementObjectSearcher mos = new ManagementObjectSearcher(oQuery);
            ManagementObjectCollection orc = mos.Get();
            // --------------------------------------------------------------------------------------------------------------
            foreach (ManagementObject oReturn in orc)
            {
                TxtPopisPortu.Text = (string)oReturn["Description"];
                //DISPLAY ALL PROPERTIES
                foreach (PropertyData pd in oReturn.Properties)
                {
                    TxtPopisPortu.Text = pd.Name;
                }
            }
        }

Chci docílit: Nevím, kolik bude připojených COM zařízení a rád bych viděl, jak které zařízení je na kterém portu.
Proto bych rád při vybrání příslušného COM portu zobrazil vedle v TxtBoxu jeho Popis.
Viz screen:

 
Odpovědět
10.9.2020 19:55
Avatar
JerryM
Člen
Avatar
JerryM:11.9.2020 9:28

nativní rozhraní RS232 neumožňuje "identifikovat" připojené zařízení, to není USB...
musel bys sis napsat privátní driver pro windows a pak by to šlo ale jen pro tvoje zařízení
jiná situace je u USB zařízení pracující v režimu seriového zařízení přes COMx port a využívající třeba HID ovladače ...

 
Nahoru Odpovědět
11.9.2020 9:28
Avatar
Odpovídá na JerryM
Daniel Semerák:11.9.2020 9:34

Měl jsem na mysli připojená USB zařízení, tam to umí vyčíst Popis zařízení, ne?
Je mi jasné, že klas. Sériový port - 9-pinový i 25-pinový (defaultně COM1 a COM2) - tohle nemá a že tam by to nefungovalo.
Našel jsem dost kodů pro tohle, ale nic z toho mi nefunguje a mám podezření, že to bude mít, že to není vázané na ComboBox, kde si vybírám příslušný Com port. :-(
Jenže nevím, jak ten CmbBox propojit s tím už hotovým kodem, aby to fungovalo.

 
Nahoru Odpovědět
11.9.2020 9:34
Avatar
JerryM
Člen
Avatar
JerryM:11.9.2020 10:12

ComboBox opravdu nemá nic společného s USB/COM portem...
Driver identifikuje USB zařízení podle jedinečného čísla/identifi­kátoru PID/VID
Doporučoval bych ti pučit si z knihovny knížku
Seriová komunikace ve Win32, Václav Vacek, BEN2003, ISBN80-7300-086-5
tam je to popsaný co a jak
a dále
USB, Měření, řízení a regulace pomocí sběrnice USB, Burkhard Kainka, BEN2003, ISBN 80-7300-073-3

 
Nahoru Odpovědět
11.9.2020 10:12
Avatar
JerryM
Člen
Avatar
JerryM:11.9.2020 10:13

a jestli máš "hotovej" program např. od nějaký firmy bez zdrojovýho texu tak asi těžko budeš něco doplňovat
k tomu potřebuješ manuál - teda pokud to vubec de

 
Nahoru Odpovědět
11.9.2020 10:13
Avatar
Daniel Semerák:11.9.2020 10:21

JerryM> Já vím, že CmbBox nemá nic společného s USB.
Jde mi ale o to, že když si v CmbBoxu vyberu nějaký COM port - kde jich může být i pět sedm nebo 10 - např. (to už přeháním, ale jen pro představu), tak aby se mi na něm zobrazil popis daného USB zařízení.
Když budu mít x různých připojených USB zařízení, jak pak poznám ve svém programu, že jsem si vybral ten správný?
Dle COM portu to nepoznám, když v CmbBoxu budu mít pod sebou seřazené COM1 až klidně COM7.
... a nechci se pokaždé dívat do Správce zařízení, abych si zjistil, na kterém portu je ono USB zařízení.

 
Nahoru Odpovědět
11.9.2020 10:21
Avatar
JerryM
Člen
Avatar
JerryM:11.9.2020 19:35

poud vim tak lze pouze provést výpis seznamu ovladačů COM portů a jejich jmen ... nic víc ..
https://docs.microsoft.com/…2-serialport

je to funkce WinAPI. ..

 
Nahoru Odpovědět
11.9.2020 19:35
Avatar
Daniel Semerák:12.9.2020 14:07

No, však mi jde jen načtení a zobrazení Description device, nic více.
To Description device, ten název, který se zobrazuje u COM portu ve Správci zařízení.
Nic jiného znát nechci.
... ale jak program pozná, že si chci zobrazit Description device jednoho konkrétního COM portu, když jich v seznamu budu mít tři nebo pět?
Ten výběr COM portu řeším právě tím CmbBoxem.
V CmbBoxu si vyberu nějaký COM port s nějakým číslem, např. 5, a vedle něj v TxtBoxu by se mi měl objevit název onoho zařízení, které uvidím, když si spustím okno Správce zařízení a rozkliknu si COM a LPT porty a tam uvidím všechny detekované porty.
V mém případě sériové USB porty.

 
Nahoru Odpovědět
12.9.2020 14:07
Avatar
JerryM
Člen
Avatar
JerryM:13.9.2020 12:32

tady to máš vyřešené
https://stackoverflow.com/…s-on-windows
ten tvuj ComboBox s tim nemá nic společného, ten ti jen vrátí číslo/index právě nastavené položky
a podle toho si sám v tebou předem vytvořeném seeznamu musíš dohledat, co to je chápeš ?

tady je property na vybraný index
https://docs.microsoft.com/…electedindex?…

 
Nahoru Odpovědět
13.9.2020 12:32
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.