PyBluez - Bluetoothverbindung herstellen

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
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
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.
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.
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

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?
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?
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Antworten