Liste verfügbarer COM-Ports (Linux+Win)

Gast #489420
Lesenswert?

Hallo,
kann ich irgendwie aus einem C-Programm heraus eine Liste aller 
verfügbaren COM-Ports bestimmen?

Das ganze sollte sowohl unter Linux 
(/dev/ttyS0...,ttyUSB0...,rfcomm0...) als auch unter Windows 
(COM0..COM20...) funktionieren. Systemunabhängig wäre toll (z.B. mit 
wxWidgets falls das hilft), muß aber nicht sein (dann halt mit bedingter 
Compilierung).

Möglichst mit High-Level-Routinen und ohne Systemcalls (wie "ls 
/dev/ttyS*").

Thx
Laura
Gast #489472
Lesenswert?

In Windows kann man auf die Einträge in der registry zurückgreifen. Wenn 
das nicht reicht, kann man auch jeden Port (z.B. 1, 2, 3, ...., 16 oder 
mehr) öffnen und den Errorcode auswerten. Da kann dann zwischen "schon 
geöffnet" oder "nicht vorhanden" unterschieden werden.
Geht auch in Linux. Dort aber nur, wenn das Programm (nicht unbedingt 
auch noch der User) root-Rechte hat.

Blackbird
#489523
Lesenswert?

Das Öffnen aller Ports kann zumindest unter Win zu heftigsten Problemen 
führen. Bei mir ist z.b. immer ein über USB und virtuellem COM Port 
verbundener Debugger hoffnungslos abgeschmiert, wenn ich versucht hab, 
seinen Port nochmal zu öffnen.
Lieber die reg auslesen, das funktioniert im Win einwandfrei.
Gast #489588
Lesenswert?

Danke, für Windows werde ich den Tip mit der Registry verfolgen.

Bei Linux sehe ich das Problem, dass die Namen der seriellen 
Schnittstellen von System zu System variieren können. Selbst die 
ttyS0...4 heißen nicht immer so. Hilft mir evtl. /proc weiter?

> sudo cat /proc/tty/drivers
/dev/tty             /dev/tty        5       0 system:/dev/tty
/dev/console         /dev/console    5       1 system:console
/dev/ptmx            /dev/ptmx       5       2 system
/dev/vc/0            /dev/vc/0       4       0 system:vtmaster
usbserial            /dev/ttyUSB   188   0-254 serial
serial               /dev/ttyS       4  64-111 serial
pty_slave            /dev/pts      136 0-1048575 pty:slave
pty_master           /dev/ptm      128 0-1048575 pty:master
pty_slave            /dev/ttyp       3   0-255 pty:slave
pty_master           /dev/pty        2   0-255 pty:master
unknown              /dev/tty        4    1-63 console

Kann ich auch ohne root-Rechte an diese Liste kommen? Und welche der 
Schnittstellen muss ich auf Funktion testen? Es gibt >300 /dev/tty*, 
davon 25 /ttyS* und 4 /ttyUSB*.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren