Getimter Abbruch bei Datenempfang (PyBluez)
Verfasst: Dienstag 19. November 2013, 23:23
Hallo miteinander,
nach langer und erfolgloser Suche nach einer Lösung für mein Problem im Netz, freue ich mich umso mehr, dass es eine so lebhafte deutschsprachige Community zu Python gibt! Ich hoffe ihr könnt mir bei meiner kleinen Frage weiterhelfen
Vielleicht vorweg als kleine Info: ich wandle erst seit Kurzem in den Python-Gefilden, komme ursprünglich aus der Webprogrammierecke (PHP, JS etc.), also bitte ich um etwas Nachsicht
.
Zu meiner Frage:
Ich stelle per PyBluez (Linux, BlueZ-Stack) eine Socket-Verbindung auf RFCOMM-Basis zum Client (einem Arduino-Board mit UART) her und sende diesem Daten. Um den Empfang der Daten quittiert zu bekommen, warte ich nach erfolgtem Senden auf eine Antwort. Falls es nun aber zu Problemen mit der Verbindung kommt und die Antwort ausbleibt, wird das Skript nicht (/oder zumindest nicht beobachtbar schnell genug) beendet, sondern beißt sich am Horchen auf Antwort fest. Ich würde den Datenempfang gerne nach einer von mir definierten Zeit beenden, habe in Python aber noch keine elegante Lösung dafür gefunden.
Der relevante Teil des Skripts:
Meine Frage ist also, wie ich am besten auf das Ausbleiben einer Antwort des Client reagiere, ohne dass sich das Skript daran aufhängt.
Vielen Dank schonmal für eure Mühen!
Besten Gruß
darkblade
nach langer und erfolgloser Suche nach einer Lösung für mein Problem im Netz, freue ich mich umso mehr, dass es eine so lebhafte deutschsprachige Community zu Python gibt! Ich hoffe ihr könnt mir bei meiner kleinen Frage weiterhelfen


Zu meiner Frage:
Ich stelle per PyBluez (Linux, BlueZ-Stack) eine Socket-Verbindung auf RFCOMM-Basis zum Client (einem Arduino-Board mit UART) her und sende diesem Daten. Um den Empfang der Daten quittiert zu bekommen, warte ich nach erfolgtem Senden auf eine Antwort. Falls es nun aber zu Problemen mit der Verbindung kommt und die Antwort ausbleibt, wird das Skript nicht (/oder zumindest nicht beobachtbar schnell genug) beendet, sondern beißt sich am Horchen auf Antwort fest. Ich würde den Datenempfang gerne nach einer von mir definierten Zeit beenden, habe in Python aber noch keine elegante Lösung dafür gefunden.
Der relevante Teil des Skripts:
Code: Alles auswählen
sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )
sock.connect((self.currentDevice, self.port))
sock.send("SendData")
retData = sock.recv(1024)
print retData
Vielen Dank schonmal für eure Mühen!
Besten Gruß
darkblade