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
Blockierung der Seriellen Schnittstelle
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.
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.
Nicht wirklich.tao hat geschrieben:das müsste wohl einfach zu unterscheiden sein, oder?
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?
@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?
ist jetzt schon wieder eine annahme, dass das gehen müsste, aber es sollte doch eigentlich?