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
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
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.
@ Blackbird root Berechtigung ist dafür nicht notwendig, dafür gibt es doch die Gruppen. http://www.mikrocontroller.net/articles/Ports_benutzen_(GCC)#Zugriffsrechte Gruß, Feadi
Unter Linux, zumindest für reine rs232: dmesg | grep tty
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*.
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.