Hallo zusammen, ich suche mir gerade nen Wolf im Inet und komme nicht weiter.
Weiß zufällig jemand von euch wie man mit unter Windows herausfinden kann welche Seriellen Schnittstellen es gibt und ob diese verfügbar sind?
Habe schon die pywin32 API durchforstet aber nichts gefunden.
Einfach nur von Com0-Com<x> durchtesten geht zwar, kommt aber nicht so gut.
Liste "verfügbarer" Com-Ports ermitteln
Mit PyWin32 wird eine "IDE" mitinstalliert, PythonWin. Dort gibt es unter Tools einen "Com Browser". Besonders toll ist'r nicht, aber er funktioniert.
Edit: Wie kann man einen Menschen nur so extrem falsch verstehen ._. Tut mir leid.
Edit: Wie kann man einen Menschen nur so extrem falsch verstehen ._. Tut mir leid.
Zuletzt geändert von BlackVivi am Donnerstag 15. November 2007, 22:48, insgesamt 1-mal geändert.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Zap!
Vielleicht ist da etwas für dich mit dabei:
http://www.microsoft.com/technet/script ... x?mfr=true
mfg
Gerold
EDIT: Sorry ich wollte eigentlich einen genaueren Link schicken, aber diese scheiß Frames...
http://www.microsoft.com/technet/script ... x?mfr=true
Vielleicht ist da etwas für dich mit dabei:
http://www.microsoft.com/technet/script ... x?mfr=true
mfg
Gerold
EDIT: Sorry ich wollte eigentlich einen genaueren Link schicken, aber diese scheiß Frames...
http://www.microsoft.com/technet/script ... x?mfr=true
Zuletzt geändert von gerold am Donnerstag 15. November 2007, 19:49, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Krass, dachte das geht ein bisschen abstrakter, aber da scheint alles drin zu sein was ich brauche. Besten dank
Edit: Jetzt muss ich nur noch rausfinden welcher Wert mir mit Sicherheit sagen kann ob der Port verfügbar ist oder nicht. Hab StatusInfo im Blick, weiß aber noch nicht wofür die Zahlen stehen. Ist der Port frei bekomme ich eine 3 als Status, ist er belegt None. (so meine ersten Tests)
Wenn's einer genau weiß würd ich mich über Infos freuen.
Der Code von dem ich spreche: http://www.microsoft.com/technet/script ... x?mfr=true
Edit: Jetzt muss ich nur noch rausfinden welcher Wert mir mit Sicherheit sagen kann ob der Port verfügbar ist oder nicht. Hab StatusInfo im Blick, weiß aber noch nicht wofür die Zahlen stehen. Ist der Port frei bekomme ich eine 3 als Status, ist er belegt None. (so meine ersten Tests)
Wenn's einer genau weiß würd ich mich über Infos freuen.
Der Code von dem ich spreche: http://www.microsoft.com/technet/script ... x?mfr=true
du könntest auch pyserial einsetzen:
Code: Alles auswählen
import serial
i=0
while True:
try:
print serial.Serial(i)
i += 1
except: break
Code: Alles auswählen
Serial<id=0xb50490, open=True>(port='COM1', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0, dsrdtr=0)
Serial<id=0xb50490, open=True>(port='COM2', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0, dsrdtr=0)
Hi Jona, pySerial benutze ich bereits für die eigentlich Kommunikation aber ich will eben nicht alle Ports pollen.Zap hat geschrieben:Einfach nur von Com0-Com<x> durchtesten geht zwar, kommt aber nicht so gut.
Außerdem gibt es durchaus Fälle (wie ich sie heute kennen gelernt habe) wo es COM1 COM2 COM4 gibt.
Da nützt diese Abfrage nicht viel. Ausserdem würde ich bei deiner Lösung auch keinen COM2 finden wenn COM1 bereits belegt ist.
Werde mir morgen mal die win32com.client Lösung angucken. Das sieht recht Vielversprechend aus.
Würde mich gesagt über nähere Details freuen wenn jemand welche hat
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Zap!Zap hat geschrieben:Würde mich gesagt über nähere Details freuen wenn jemand welche hat
Meine COMM-Ports werden in der Registry unter "HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM" aufgelistet.
Wenn das bei dir auch so ist, dann könntest du diese einfach aus der Registry auslesen.
Code: Alles auswählen
import _winreg as winreg
key = winreg.CreateKey(winreg.HKEY_LOCAL_MACHINE, r"HARDWARE\DEVICEMAP\SERIALCOMM")
data = []
i = 0
while True:
try:
data.append(winreg.EnumValue(key, i)[1])
i += 1
except WindowsError:
break
winreg.CloseKey(key)
print data
Code: Alles auswählen
[u'COM1', u'COM2', u'COM3', u'COM4', u'COM6', u'COM7',
u'COM15', u'COM16', u'COM17', u'COM18', u'COM19', u'COM20',
u'COM21', u'COM22', u'COM40']
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.