Serial Port-verbindung "could not open port COM1"

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
inmymind
User
Beiträge: 2
Registriert: Donnerstag 24. Dezember 2009, 21:58

Hallo zusammen!

Mein Problem wird in der Überschrift schon beschrieben.
Ich bin ein ziemlicher Anfänger was Python betrifft, also bitte nicht zu ausführlich oder kompliziert erklären. Danke! :oops:

Kurze Beschreibung:

Ich habe ein Modul namens thinkgear.py welches ich ausführen wollte um Daten aus einem Gerät zu lesen. (Verbindung per Bluetooth)

Nachdem ich alle notwendigen Module (pyserial und win32irgendwas) installiert hab, kommen jetzt fehlermeldungen. Warscheinlich weil ich die Module seperat ausführen wollte und die scripte nicht entsprechend konfiguriert sind.



Der Fehler in der IDLE lautet:
>>>

Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Admin\Desktop\thinkgear\thin\build\lib\thinkgear\thinkgear.py", line 258, in <module>
main()

Ich poste mal das Script serialwin32.py in dem man anscheinend die konfiguration des Ports vornehmen muss:

Code: Alles auswählen

Code ausgelagert
--> http://paste.pocoo.org/show/159551/
edit: achso hier meintest du.. dann war ich wohl zu langsam.


Vielen Dank schonmal für jegliche Hilfe!

edit: Achso, bevor ich es vergesse..
Das BT-Gerät ist aktiviert und verbunden.
Also liegt es vermutlich nur an falschen Portangaben?
Gibt es nicht eine Möglichkeit den Port und die Einstellungen automatisch zu finden und das richtige Bluetooth Gerät automatisch zu identifizieren?

Gibts irgendwelche kleinen codesnippets um die BT verbindung zu checken?


P.s: Ich möchte nur daten lesen von dem Gerät, und auf keinenfall schreiben. (ausser wenn das erforderlich ist, um eine Verbindung aufzubauen)

Pss.: Frohe Weihnachten!

Edit by Gerold: Code ausgelagert
Zuletzt geändert von inmymind am Freitag 25. Dezember 2009, 16:52, insgesamt 1-mal geändert.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

inmymind hat geschrieben:File "C:\Dokumente und Einstellungen\Admin\Desktop\thinkgear\thin\build\lib\thinkgear\thinkgear.py", line 254, in main
for pkt in ThinkGearProtocol('/dev/rfcomm9').get_packets()
Hallo inmymind!

Willkommen im Python-Forum!

Falls du etwas am von dir gezeigten Code verändert hast -- mache es wieder rückgängig. :-)

So wie ich den Traceback (die Fehlermeldung) interpretiere, wird der COMM-Port in der Zeile

Code: Alles auswählen

for pkt in ThinkGearProtocol('/dev/rfcomm9').get_packets()
eingestellt.
Stelle dort den richtigen COMM-Port für "Windows" ein.
Probiere einfach mal alle Zahlen von 1 bis 10 durch, falls du den COMM-Port nicht weißt.

Code: Alles auswählen

for pkt in ThinkGearProtocol(1).get_packets()
oder
for pkt in ThinkGearProtocol(2).get_packets()
oder
for pkt in ThinkGearProtocol(3).get_packets()
...
Statt den Zahlen, kannst du es auch mit "COM1" bis "COM10" durchprobieren. Das sieht dann so aus:

Code: Alles auswählen

for pkt in ThinkGearProtocol("COM1").get_packets()
oder
for pkt in ThinkGearProtocol("COM2").get_packets()
...
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Etwas verwirrend ist der Kommentar in thinkgear.py:

Code: Alles auswählen

class ThinkGearProtocol(object):
    def __init__(self, port):
        # TODO: Handle bluetooth rfcomm setup
Andererseits wird aber eine Instanz mit

Code: Alles auswählen

for pkt in ThinkGearProtocol('/dev/rfcomm9').get_packets():
erstellt, d.h. wohl ein Bluetooth-Device verwendet. Funktioniert das evtl. nur unter Linux?
MfG
HWK
inmymind
User
Beiträge: 2
Registriert: Donnerstag 24. Dezember 2009, 21:58

Hallo inmymind!

Willkommen im Python-Forum!
Hallo, und Danke für den herzlichen Empfang. :)
..falls du den COMM-Port nicht weißt.
Den weiß ich, aber ich bin mit python noch nicht so vertraut. Deshalb bin ich bei so großen Skripten mit experimentellen Änderungen vorsichtig.

..wohl ein Bluetooth-Device verwendet. Funktioniert das evtl. nur unter Linux?
Ja, Bluetooth. Das Gerät funktioniert auch under Windose!


Gleich mal testen...

Cool Danke!!! :D

Hat auf anhieb funktioniert mit "Com2"
Jetzt muss ich nurnoch rausfinden wie ich nur die wichtigen Infos übertragen kann, und mit Befehlen verknüpfen..

Die Werte

DEBUG:__main__:POOR SIGNAL:
DEBUG:__main__:ATTENTION eSense:
DEBUG:__main__:MEDITATION eSense:

würde ich gerne an Blender bzw. eine exe datei übertragen die mit blender erstellt wurde. (pygame.py ist installiert)
Kann ich das thinkgear script und seine ausgabe irgendwie mit blender und der finalen (kompilierten) game.exe verbinden?
edit: Das problem ist bereits gelöst!

Das Mini-Game soll open source werden, und eine nennung in den credits wäre kein Problem!

Ach und eine Frage hätte ich da noch:

Der Com2 Port gilt nur für meine installation. Die anderen Spieler verwenden andere Ports. Kann man eine manuelle Eingabe des Ports in der Exe realisieren? Also die Eingabe kann ich schon regeln über ein extra python scritp das aktiv wird, wenn das spiel startet.
Aber wie genau das aussehen muss, das muss ich auch noch rausfinden.

Wenn ich das gelernt hab, dann weiß ich wie man Daten an eine exe überträgt, und von einer exe an ein script. Das wäre sehr nützlich! :)
Antworten