Seite 1 von 1

PyBluez - Bluetoothverbindung herstellen

Verfasst: Freitag 11. Dezember 2015, 15:21
von Hochschulakrobaten
Moin allerseits,

wir, die Hochschulakrobaten, sind drei (Vermessungs-)Studenten und spielen derzeit mit PyBluez herum. Wir versuchen unseren Laptop mit einem Messinstrument (Tachymeter) mittels PyBluez zu koppeln, um später das Messinstrument fernzusteuern.

Für die Bluetoothverbindung nutzen wir einen Bluetooth-USB-Adapter. Hierfür ist bereits ein Bluetooth Serial Port (COM19) eingerichtet, welcher bei anderen Programmen bereits funktionierte. Wie können wir nun mittels PyBluez eine Verbindung herstellen? Die Suche im Internet half uns bisher nicht weiter.

Mit freundlichen Grüßen,
die Hochschulakrobaten

Re: PyBluez - Bluetoothverbindung herstellen

Verfasst: Freitag 11. Dezember 2015, 15:59
von BlackJack
@Hochschulakrobaten: Ich bin mir nicht so ganz sicher ob ich das Problem richtig verstehe. Das Bluetooth-Dongle ist bereits in Windows mit einem COM-Port verbunden und über den könnt ihr mit anderen Programmen mit dem Messinstrument kommunizieren? Beispielweise mit einem simplen Terminalprogramm? Dann bräuchtet ihr kein PyBluez, sondern PySerial, denn dann spielt der Umstand, dass die serielle Verbindung über Bluetooth statt über ein serielles Kabel geht, eigentlich gar keine Rolle.

Re: PyBluez - Bluetoothverbindung herstellen

Verfasst: Freitag 11. Dezember 2015, 16:27
von Hochschulakrobaten
BlackJack hat geschrieben:[...]Das Bluetooth-Dongle ist bereits in Windows mit einem COM-Port verbunden und über den könnt ihr mit anderen Programmen mit dem Messinstrument kommunizieren? [...]
Richtig! Der Bluetooth-USB-Adapter ist bereits mit einem COM-Port in Windows verbunden. Bisher steuern wir das Messinstrument mit der freizugänglichen Software "HTerm" fern. Nun versuchen wir in PyBluez ein Programm hierfür zu schreiben.
BlackJack hat geschrieben:[...]Dann bräuchtet ihr kein PyBluez, sondern PySerial, denn dann spielt der Umstand, dass die serielle Verbindung über Bluetooth statt über ein serielles Kabel geht, eigentlich gar keine Rolle.
Unser Code (PySerial):

Code: Alles auswählen

import serial
import time

TS = serial.Serial('COM19', 19200)
time.sleep(2)
print("initialising")

TS.write('#5004')
TS.close()
Es kommt zwar keine Fehlermeldung, allerdings auch keine Rückmeldung vom Instrument.

Re: PyBluez - Bluetoothverbindung herstellen

Verfasst: Freitag 11. Dezember 2015, 16:31
von __deets__
was soll denn auch fuer eine Rueckmeldung kommen? Du wartest ja auf nichts... oder soll das blinken und piepen?

Was auffaellt: es gibt kein Zeilenendezeichen. Das ist eher unwahrscheinlich, dass das Protokoll so etwas nicht vorsieht. Hast du einen Link zu dem entsprechenden Protokoll? Und drueckst du Return/Enter in hterm?

Re: PyBluez - Bluetoothverbindung herstellen

Verfasst: Freitag 11. Dezember 2015, 16:42
von Hochschulakrobaten
__deets__ hat geschrieben:was soll denn auch fuer eine Rueckmeldung kommen? Du wartest ja auf nichts... oder soll das blinken und piepen? [...]
Durch den Befehl "#5004" soll das Instrument seine Serienummer zurücksenden.

__deets__ hat geschrieben:[...]Was auffaellt: es gibt kein Zeilenendezeichen. Das ist eher unwahrscheinlich, dass das Protokoll so etwas nicht vorsieht.[...]
Was genau meinst du? L2CAP? Oder RFCOOM?
__deets__ hat geschrieben:[...]Und drueckst du Return/Enter in hterm?
Meinst du CR+LF (Carriage Return + Line Feed) in HTerm?

Re: PyBluez - Bluetoothverbindung herstellen

Verfasst: Freitag 11. Dezember 2015, 17:02
von __deets__
Du schickst einen Befehl, aber du schreibst keinen Code, der auf eine Antwort wartet - also kann auch keine kommen, oder?

Und mit Protokoll meinte ich die Befehlsreferenz des Geraetes - ob das ueber eine serielle Schnittstelle, Bluetooth etc. angebunden ist, ist hier irrelevant - es geht ja schon mit HTerm.

Last but not least: ja, CR + LF, oder ggf nur LF sollten ebenfalls gesendet werden (das steht dann ueblicherweise in dem schon erwaehnten Protokoll...). Zumindest ist das bei den meisten seriell angsprochenen Geraeten so. Die schickst du aber nicht mit.