Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Bluetooth LE Leica Disto (https://www.delphipraxis.net/199367-bluetooth-le-leica-disto.html)

MeGe 18. Jan 2019 13:53

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

DP-Maintenance 18. Jan 2019 14:45

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.

philipp.hofmann 18. Jan 2019 15:15

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):
https://quality.embarcadero.com/browse/RSP-21711

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

MEissing 18. Jan 2019 15:49

AW: Bluetooth LE Leica Disto
 
Jain.

Ohne Pairing geht es auch mit den WinRT APIs (die 10.3 Rio als Pascal Header mitbringt)

philipp.hofmann 18. Jan 2019 22:17

AW: Bluetooth LE Leica Disto
 
Zitat:

Zitat von MEissing (Beitrag 1423562)
Jain.

Ohne Pairing geht es auch mit den WinRT APIs (die 10.3 Rio als Pascal Header mitbringt)

Meinst Du die Beacon-Implementierung? Habe ich mir nur kurz angeschaut und jetzt adhoc keine Schreibmöglichkeit gefunden, sondern nur Auslesen. Damit würde es mir nichts bringen.
Oder kann man beides kombinieren, damit sich TBluetoothLE auch wieder unter Windows nutzen lässt?

MEissing 19. Jan 2019 12:05

AW: Bluetooth LE Leica Disto
 
Nicht die Komponente benutzen, sondern die WinRT API.

Rollo62 19. Jan 2019 14:03

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.

MeGe 21. Jan 2019 12:17

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

rabatscher 26. Mai 2020 21:37

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?

philipp.hofmann 27. Mai 2020 07:42

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.

rabatscher 27. Mai 2020 07:50

AW: Bluetooth LE Leica Disto
 
Ich hab hier die "Anleitung" dazu:

https://stackoverflow.com/questions/...04567#62004567

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

philipp.hofmann 27. Mai 2020 08:02

AW: Bluetooth LE Leica Disto
 
Danke, schaue ich mir mal an.

Rollo62 27. Mai 2020 13:28

AW: Bluetooth LE Leica Disto
 
Zitat:

Zitat von rabatscher (Beitrag 1465433)
Ich hab hier die "Anleitung" dazu:

https://stackoverflow.com/questions/...04567#62004567

hinzuzufügen ist eventuell


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 ?
https://stackoverflow.com/questions/...ore-connection
Ist das irgendwann mal weggefallen, oder war das nie vorgesehen ?
Weil das immer unklar war hatte ich WinRT BLE nie angefasst.

philipp.hofmann 27. Mai 2020 13:33

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.

philipp.hofmann 27. Mai 2020 13:41

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.

Rollo62 27. Mai 2020 19:02

AW: Bluetooth LE Leica Disto
 
Zitat:

Zitat von philipp.hofmann (Beitrag 1465515)
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.

Danke für die Info, heisst das Windows-BLE ist Deiner Meinung nach jetzt stabil genug für echte Projekte ?

philipp.hofmann 27. Mai 2020 19:25

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

rabatscher 29. Mai 2020 07:18

AW: Bluetooth LE Leica Disto
 
Ich habe die Funktion auf Stackoverflow upgedatet...


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz