![]() |
Bluetooth LE Leica Disto
Hallo zusammen,
ich habe hier ein Leica Disto Distanzmessgerät, welches ich über Bluetooth LE versuche zu verbinden. Ich verwende Delphi Tokyo 10.2. und nutze dabei die Komponente TBluetoothLE, das ganze unter Windows 10. Über das Event OnDiscoverLEDevice ermittle ich die Geräte. Hier werden mir allerdings nur die Geräte angezeigt, die gekoppelt sind, die Geräte die verbunden sind, ignoriert er. Die Codebeispiele vom Embarcadero den BLEScanner, ExplorerDevicesLe etc.. habe ich schon getestet, mit dem selben Resultat. Habt ihr eine Vermutung. Freundliche Grüße und ein schöne Wochenende Gerd |
Dieses Thema wurde am "18. Jan 2019, 15:45 Uhr" von "Luckie" aus dem Forum "Neuen Beitrag zur Code-Library hinzufügen" in das Forum "Programmieren allgemein" verschoben.
|
AW: Bluetooth LE Leica Disto
Hi,
das ist leider tatsächlich so. Da hat Emba eine Windows-Funktion, die vor gut 18 Monaten verbaut wurde (nämlich, dass man nicht mehr pairen muss), noch nicht eingebaut und mittlerweile speichert Windows das Pairing nicht mehr, d.h. Du musst nach jedem Windows-Start neu pairen. In Summe bedeutet dies hart formuliert: Delphi unterstützt von Hause aus kein Bluetooth-LE mehr unter Windows und es geht nur noch mit iOS und Android (mit MacOS gibt es auch x-Einschränkungen, wo die TBluetoothLE-Implementierung nicht funktioniert). Du kannst für den Support-Issue, den es dafür schon gibt voten (Emba sieht es als Feature an, ich als Bug): ![]() Ich bin daher auf die recht teure ip*Works-Variante der Bluetooth-Implementierung umgestiegen, welche aber an sich deutlich hakeliger ist, als TBluetoothLE, aber wenigstens ohne Pairing funktioniert. Grüße, Philipp |
AW: Bluetooth LE Leica Disto
Jain.
Ohne Pairing geht es auch mit den WinRT APIs (die 10.3 Rio als Pascal Header mitbringt) |
AW: Bluetooth LE Leica Disto
Zitat:
Oder kann man beides kombinieren, damit sich TBluetoothLE auch wieder unter Windows nutzen lässt? |
AW: Bluetooth LE Leica Disto
Nicht die Komponente benutzen, sondern die WinRT API.
|
AW: Bluetooth LE Leica Disto
Das ist wohl leider so. Win10 muss gepairt werden.
Android und ios macos funktionieren ohne. Edit Jetzt erst sehe ich alle Beiträge, es scheint manchmal zu hakeln am Tablet. Also das wurde schon besprochen, sorry. |
AW: Bluetooth LE Leica Disto
Hallo,
das Supportteam vom Emba, hat mir auch den Tipp mit WinRT gegeben. An dieser Stelle, vielen Dank für eure Info. Gruß Gerd |
AW: Bluetooth LE Leica Disto
Hey!
Ich bin gerade in dasselbe Problem geschlittert - diesmal mit dem Herzratenprofil... Eine Lösung war für mich die Klassen in System.Win.BluetoothWinRT zu erweitern um die Pairingproblematik zu umgehen. Dabei habe ich das Service/Characteristics/Profiles discovery auf die Async API von WinRT umgestellt. Es ist zwar nicht ganz asynchron aber es funzt soweit... Wäre jemand an dem "Patch" für Delphi 10.3 interssiert? |
AW: Bluetooth LE Leica Disto
Ja, an dem Patch wäre ich interessiert. Ich nutze auch die TBluetoothLE-Implementierung und zwinge aktuell die Kunden dazu die Devices vorab im OS zu pairen. Wen ich darauf verzichten könnte, würde ich dies gerne tun.
|
AW: Bluetooth LE Leica Disto
Ich hab hier die "Anleitung" dazu:
![]() hinzuzufügen ist eventuell, dass man die Datei kopieren und extra per Projektmanager einfügen muss. -> danach die Patches anbringen. Ich hab natürlich nicht den ganzen Code gepostet - nur die relevanten Teile (denke das wäre ein Lizenzvergehen...) aber ich hoffe du kommst damit zurecht... Den Code dort kann man natürlich noch optimieren und die asynchronen Operationen noch in einen Thread verpacken bzw. das ganze in die (noch leere) Routine Connect verpacken... |
AW: Bluetooth LE Leica Disto
Danke, schaue ich mir mal an.
|
AW: Bluetooth LE Leica Disto
Zitat:
Dankesehr, da schaue ich auch mal rein. Ich habe bisher noch kein BLE unter Windows, weil es immer zu unstabil/unklar war, aber anfragen dazu habe ich schon. War es denn nicht so das Windows selbst das Pairing einforderte ? ![]() Ist das irgendwann mal weggefallen, oder war das nie vorgesehen ? Weil das immer unklar war hatte ich WinRT BLE nie angefasst. |
AW: Bluetooth LE Leica Disto
Windows 10 fordert bei BLE-Devices schon seit rund 2 Jahren kein Pairing mehr ein. Das kam mit irgendeinem Windows-10-Update. Problem war zeitweise, dass man sogar gar kein Pairing für BLE-Devices mehr in Windows speichern konnte (das war vor 1,5 Jahren) und damit wurde TBluetoothLE für Windows unnutzbar. Mittlerweile ist dies aber auf Windows-Seite wieder korrigiert. Trotzdem wäre es natürlich schöner, man braucht es auch in der Delphi-App nicht.
|
AW: Bluetooth LE Leica Disto
Ich komme mit den Anpassungen noch nicht ganz hin:
a) Bitte noch den var-Teil von TWinRTBluetoothGattCharacteristic.DoGetDescriptors : TBluetoothGattDescriptorList; zeigen. b) Nach den "if FID = 0 then"-Teilen kommt immer der alte Code im else-Zweig? Danke. |
AW: Bluetooth LE Leica Disto
Zitat:
|
AW: Bluetooth LE Leica Disto
Ja, ist es definitiv. Es ist auch auf jeden Fall stabiler als die IPWorks-Implementierung, die dazwischen schon mal abraucht. Aus meiner Sicht war das einzige Problem bisher, dass man vorab "pairen" musste.
Ich habe jetzt den Code von rabatscher auch bei mir zum Laufen bekommen (allerdings mit der obengenannten Annahme aus b, welche aber passen sollte). Mal sehen, ob auch alles ohne vorheriges Pairing in Windows stabil läuft (als auch mit Pairing). |
AW: Bluetooth LE Leica Disto
Ich habe die Funktion auf Stackoverflow upgedatet...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz