Blockierung der Seriellen Schnittstelle

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
george
User
Beiträge: 109
Registriert: Mittwoch 11. Januar 2006, 20:28
Wohnort: Berlin

Donnerstag 16. November 2006, 10:03

Hey,

ich habe folgendes Problem. In einer Anwendung soll eine serielle Kommunikation über RS232 aufgebaut werden und Daten ausgetauscht werden. Das funktioniert soweit auch alles sauber.

Jetzt habe ich die Situation, dass der Anwender die Adresse manuell eingeben kann und dann erst die Verbindung aufgebaut wird. Hierbei kam es zu der Situation, dass eine falsche Verbindung(zu einem Bluetoothgerät) aufgebaut wurde. Bei einem anschließenden Schreibbefehl, blockierte der Quellcode komplett und nicht einmal der Timeout(PySerial) konnte die Blockierung lösen.

Habt ihr einen Ansatz, wie man so etwas handelt?
Mir ist auch unklar, warum der Timeout aus PySerial die Blockade nicht aufhebt.

Danke
greets george
tao
User
Beiträge: 15
Registriert: Sonntag 12. November 2006, 21:34
Wohnort: basel
Kontaktdaten:

Freitag 17. November 2006, 11:41

hi george,

vielleicht täusche ich mich jetzt auch, aber eigentlich hat jedes betriebssystem eine liste(dev/tty/), auf der auch alle serialports aufgelisted sind und es können maximal ein par richtige sein, wenn du nur verbindungen über rs232 zulassen willst. wenn den programm also nicht auf bluetooth zugreifen soll, dann analysierst du einfach die benutzereingabe und startest die verbindung nicht.

auf dem mac sieht das ungefähr so aus:

/dev/tty.usb-Z3000elf
/dev/tty.Bluetooth-Modem

das müsste wohl einfach zu unterscheiden sein, oder?
ausserdem sollte man den zustand dieser ports auch abfragen können mit python. da dein gerät eine signatur besitzt sollte man es ohne weiteres finden können. wie das genau geht weiss ich leider so aus dem handgelenk auch nicht.
Benutzeravatar
Blattlaus
User
Beiträge: 55
Registriert: Donnerstag 24. August 2006, 08:55

Freitag 17. November 2006, 12:12

tao hat geschrieben:das müsste wohl einfach zu unterscheiden sein, oder?
Nicht wirklich.
Unter Linux hindert mich nicht daran meine Bluetooth-Serielle Schnitstelle auf /dev/ttyS0 zu legen, was normalerweise der ersten seriellen Schnittstelle im PC entsprechen würde. Klar kann man davon ausgehen, dass das niemand wirklich tun würde, aber soltle man wirklich mit Annahmen programmieren? :o
tao
User
Beiträge: 15
Registriert: Sonntag 12. November 2006, 21:34
Wohnort: basel
Kontaktdaten:

Freitag 17. November 2006, 14:34

@blattlaus: ich gehe doch schwer davon aus, dass man den zustand des ports abfragen kann! dann muss doch das gerät eine ID haben, und die kann ich doch erkennen.
ist jetzt schon wieder eine annahme, dass das gehen müsste, aber es sollte doch eigentlich?
Antworten