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.