Hallo, wie bekommt man die Liste der verfügbaren Com Ports unter C# angezeigt? Ich bin leider noch blutiger Anfänger und bin für jede Hilfe dankbar. Viele Grüße Michael
in der registry sind unter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E978-E325
-11CE-BFC1-08002BE10318}
alle comports gelistet.
dort kannst du ueber DriverDesc oder MatchingDeviceId das richtige
device rausfinden.
wenn du die hardware-id kennst, kannst du den ersten schritt weglassen.
unter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\
werden anhand der MatchinDeviceId die Devices ebenfalls nocheinmal
gelistet.
wenn das device aktiv ist, kannst du auf
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\<MatchingDeviceId>\Cont
rol\ActiveService
(wobei <MatchingDeviceId> natuerlich ersetzt werden sollte ;))
zugreifen, wenn es nicht aktiv ist, bekommst du einen FILE_NOT_FOUND
zurueck.
in
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\<MatchingDeviceId>\Devi
ce Parameters\PortName
schliesslich stehen die vergebenen comports, wie zb 'COM5' oder so.
zumindest kann man auf diesem weg eine spezielle id zu einem device
herausfinden. ob es einen einfacheren weg fuer eine liste aller
vergebenen ids gibt, weiss ich nicht.
Geht genau wie unter dem Link, der "tuppes" vorher gepostet hat mit einer Zeile Code: // Get a list of serial port names. string[] ports = SerialPort.GetPortNames();
und wie werden die Ports in der Combobox dann aufgelistet?
1 | private void PortSelect_SelectionChangeCommitted(object sender, System.EventArgs e) |
2 | {
|
3 | string[] ports = SerialPort.GetPortNames(); |
4 | |
5 | |
6 | |
7 | if (PortSelect.SelectedIndex == 0) return; |
8 | if (CommSetup(PortSelect.SelectedIndex, 19200)) |
9 | {
|
10 | RegistryKey Key = Registry.CurrentUser.OpenSubKey("xxx", true); |
11 | if (Key == null) Key = Registry.CurrentUser.CreateSubKey("xxx"); |
12 | Key.SetValue("CommPort",PortSelect.SelectedIndex); |
13 | }
|
14 | else
|
15 | {
|
16 | PortSelect.SelectedIndex = 0; |
17 | MessageBox.Show("COM Port kann nicht geöffnet werden!", "xxx",MessageBoxButtons.OK, MessageBoxIcon.Exclamation); |
18 | |
19 | }
|
20 | }
|
Michael wrote:
> und wie werden die Ports in der Combobox dann aufgelistet?
1 | aComboBox.Items.AddRange(SerialPort.GetPortNames()); |
p.s. statt mit der Registry zu arbeiten sollte man besser die dafür vorgesehenen ApplicationSettings ala
1 | aNamespace.Properties.Settings.Default.CommPort = PortSelect.SelectedIndex; |
benutzen...
Hallo, hier mal meine Lösung:
1 | private void Form1_Load(object sender, EventArgs e) |
2 | {
|
3 | cmbPort.Items.Clear(); |
4 | foreach (string s in System.IO.Ports.SerialPort.GetPortNames()) |
5 | cmbPort.Items.Add(s); |
6 | cmbPort.SelectedIndex = 0; |
7 | |
8 | }
|
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.