Deze is redelijk eenvoudig te googlen, heb namelijk -exact- hetzelfde gedaan een paar maaden geleden.
Maar vooruit, om je wat uitzoekwerk te besparen:
(p.s. Mijn Com Emulator heet USB to UART, dus vandaar het matchen op UART.)
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| private String comPort
{
get
{
ManagementObjectSearcher deviceList =
new ManagementObjectSearcher("SELECT Name from Win32_PnPEntity WHERE Name LIKE '%UART%'");
if (deviceList != null)
{
// Enumerate the devices
foreach (ManagementObject device in deviceList.Get())
{
string name = device.GetPropertyValue("Name").ToString();
Regex com = new Regex(".*\\((?<comport>COM[0-9]+)\\)");
Match m = com.Match(name);
if (m.Success)
{
return m.Groups["comport"].ToString();
}
else
{
throw new Exception("Couldn't extract COM port from UART Device Identifier.");
}
}
}
throw new Exception("No UART Device Found.");
}
} |
Deze property returnt de string "com7", als het ding op com poort 7 hangt.
Oh, en notably, als je twee compoort emu's tegelijk aansluit is de keuze ongedefinieerd, maar goed, die aanname viel bij mij buiten de scope.
Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info