Getimter Abbruch bei Datenempfang (PyBluez)

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
darkblade
User
Beiträge: 2
Registriert: Dienstag 19. November 2013, 23:01

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:

Code: Alles auswählen

sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )
sock.connect((self.currentDevice, self.port))
            
sock.send("SendData")
        
retData = sock.recv(1024)
print retData
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
BlackJack

@darkblade: `BluetoothSocket`-Objekte haben eine `settimeout()`-Methode. Wofür mag die wohl gut sein…
darkblade
User
Beiträge: 2
Registriert: Dienstag 19. November 2013, 23:01

Es kann also doch so einfach sein :-D.. Habe ich beim Lesen der msbt.py gestern Abend wohl überlesen, hab mich schon gewundert. Dankeschön! :-)
Antworten