Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Bluetooth-Verbindung in FMX mit Leica Disto X3/X4 Lasermesser in FMX (https://www.delphipraxis.net/197273-bluetooth-verbindung-fmx-mit-leica-disto-x3-x4-lasermesser-fmx.html)

AuronTLG 25. Jul 2018 16:47

Bluetooth-Verbindung in FMX mit Leica Disto X3/X4 Lasermesser in FMX
 
Hallo,

vermutlich ist das eine zu spezielle Angelegenheit, aber ich habe erhebliche Probleme dabei,
den Leika Disto X3 Lasermesser auf FMX zum Laufen zu bringen, da das Teil mit einer neuen SDK versehen wurde und anscheinend nicht mehr so funktioniert wie die älteren Modelle dies taten.

Ältere Laser konnte man praktisch genau so einbinden, wie Embarcadero es sich gedacht hat, d.h. mit TBluetoothLE, Servicen, SubScribeToCharacteristic etc.
Auf diesem Weg bekomme ich es aber beim besten Willen nicht zum laufen.

Es besteht für mich natürlich die Möglichkeit, die zugehörige Java-Library einzubinden und das Ganze damit umzusetzen, doch das würde ich wenn möglich umgehend, da es extremst umständlich wäre.

Die Chancen sind wohl gering, aber vielleicht hat ja jemand hier auch mit dem Teil zu tun gehabt. Wäre super.

Rollo62 26. Jul 2018 09:29

AW: Bluetooth-Verbindung in FMX mit Leica Disto X3/X4 Lasermesser in FMX
 
Kann es sein das die BLE-Encryption benutzen ?

Zum Glück habe ich damit noch nichts zu tun gehabt, es bahnt sich aber mehr und mehr an.

Rollo

knaeuel 26. Jul 2018 11:05

AW: Bluetooth-Verbindung in FMX mit Leica Disto X3/X4 Lasermesser in FMX
 
das wäre auch meine Befürchtung gewesen. Ich kenne das in recht harmloser For vom Mi Band 2. Dort werden bei Verbindungsaufnahme 16 Bytes vom Band zum handy übertragen, die es dann AES-verschlüsselt zurückbekommen möchte. Passt die Antwort, kann die "normale" unverschlüsselte Kommunikation beginnen (Dienste einlesen, Abos eintragen, etc.)

AuronTLG 26. Jul 2018 11:43

AW: Bluetooth-Verbindung in FMX mit Leica Disto X3/X4 Lasermesser in FMX
 
So, habe mir eine kleine Mini-App gebaut, mit der ich experimentieren konnte...

Die Sache sieht im Prinzip so aus.

Ich kriege den Laser mithilfe von TBluetoothLE angesteuert, ich kann mir die Services anzeigen lassen, und zu den Services die Characteristics mit entsprechenden UUIDs.
Ich kann sogar wie gehabt SubscribeToCharacteristic mit Erfolg ausführen.

Für die Characteristics habe ich dann zwar die UUIDs, aber keinerlei Beschreibungen oder Namen, die sind nämlich leer.

Und hier liegt das Problem. Bei den vorherigen Leica-Modellen gab es eine bestimmte UUID, mit der man das Distanzmessungs-Characteristic ansteuern und subscriben konnte.
Diese UUID gibt es aber im X3 nicht mehr, und es sind keinerlei Informationen zu finden, welche UUID nun die Distanzmessung ansteuert oder ob es überhaupt noch so funktioniert.

Ich habe mithilfe der MiniApp sämtliche angezeigten Characteristic-UUIDS durchprobiert, ohne Erfolg. Sobald der Laser versucht, etwas zu senden, zeigt er den Fehler für fehlende Bluetoothverbindung an, obwohl er selbst vorher signalisiert hat, dass eine Verbindung hergestellt wurde.

knaeuel 26. Jul 2018 12:21

AW: Bluetooth-Verbindung in FMX mit Leica Disto X3/X4 Lasermesser in FMX
 
hast du schonmal die Bluetooth-Daten mitschreiben lassen? Das kann eigentlich fast jedes Android-Handy. Es sollte in den Entwckleroptionen zu finden sein und in etwa "Bluetooth HCI Überwachungsprotokoll" oder so heißen. Einfach mal aktivieren und dann die Hersteller-App laufen lassen.

Dann kannst du hinterher die Datei (bei mir heißt die in etwa so "btsnoop_hci.log") einfach auf einen Windows-PC kopieren und dort mit Wireshark öffnen. Ich warne dich schonmal vor: es ist ein riesengewimmel in dem log, aber mit etwas geduld findest du bestimmt einiges heraus.

Rollo62 26. Jul 2018 20:04

AW: Bluetooth-Verbindung in FMX mit Leica Disto X3/X4 Lasermesser in FMX
 
Versuch einfach mal die Notifications nacheinander zu Subscribe, und sehen auf welchem Kanal was passiert.
Für den Erstkontakt nehme ich meist BLE Tools, habe im Moment die Liste aber nicht hier. So was wie lightblue für iOS.

Edit:
Der BleScanner ist z.B. ganz übersichtlich.
Damit kan man Notifications subscriben, und die werden dann als HEX gezeigt.

Es geht aber auch sehr gut mit dem BleScanner Projekt in den Delphi Demos, das ist aber
leider eher ein Proof-of-concept.

Rollo

AuronTLG 3. Aug 2018 13:54

AW: Bluetooth-Verbindung in FMX mit Leica Disto X3/X4 Lasermesser in FMX
 
So, ich habs gelöst, nach jeder Menge Herumwühlen in den BluetoothLogs (danke für den Tipp) und im Code der Leica-Beispiel-App, von daher ist das hier nur ein kleiner Nachtrag für etwaige Leute, die auf dasselbe Problem stoßen und hier danach suchen könnten:

Die Leica-Generation, zu der der X3 gehört, verwendet im Prinzip einfach nur andere Characteristics. Der Service ist derselbe, nämlich immer noch der mit der UUID '{3AB10100-F831-4395-B29D-570977D5BF94}'.

Der Trick besteht darin, dass man sich anscheinend mit sämtlichen Characteristics, die dieser Service zur Verfügung stellt, verbindet (SubscribeToCharacteristic), was mit allen außer ~ 2 möglich ist.

Hat man das getan, so empfängt man, sobald man mit dem Laser misst, über die "BASIC_MEASUREMENT"-Characteristic mit der UUID '{3AB1010D-F831-4395-B29D-570977D5BF94}' ein Byte-Array, welches den Messwert enthält, den man sich auslesen kann, indem man die ersten 4 Werte des Arrays in umgekehrter Reihenfolge (Little Endian) in eine Float umwandelt.

Rollo62 3. Aug 2018 19:01

AW: Bluetooth-Verbindung in FMX mit Leica Disto X3/X4 Lasermesser in FMX
 
Dankesehr für die Info.

Ich habe jetzt mit Leica nicht besonders ausprobiert, nur mal mit einen BleTool reigeschaut.
Ich weiss aber das die ein SDK für ihre Produkte anbieten.
Hast du dir das vielleicht schonmal besorgt ?

Womöglich stehen da noch weitere Geheimnisse drin, in die Richtung was man sonst noch so mit dem Teil machen kann, soweit Leica das im SDK bekannt gemacht hat.

Rollo

AuronTLG 6. Aug 2018 08:57

AW: Bluetooth-Verbindung in FMX mit Leica Disto X3/X4 Lasermesser in FMX
 
Ja, für Android (Java) und IOS. Die habe ich, und eben genau beim Durchsuchen der API habe ich ja auch rausgefunden, dass die Messwerte über eben genau jene UUID empfangen werden.

Es ist aber z.B. auch möglich, dem Laser Befehle zu übermitteln, indem man der Characteristic mit der UUID '{3AB10120-F831-4395-B29D-570977D5BF94}' per WriteCharacteristic bestimmte Werte übermittelt.
Z.B. Messungen über das Handy zu starten, bestimmte Informationen abrufen, etc.

Das einzige Problem, was ich jetzt noch habe, ist, dass das Laser, zumindest mit den Smartphones, die ich hier habe, nach einer kurzen Weile einfach die Verbindung abbricht. Das Problem scheinen die offiziellen Apps aber auch zu haben, weswegen ich davon ausgehe, dass es an den Smartphones oder am Laser liegt.

Rollo62 6. Aug 2018 12:44

AW: Bluetooth-Verbindung in FMX mit Leica Disto X3/X4 Lasermesser in FMX
 
Normalerweise haben diese Geräte ein AutoShut-Off, um Batteriepower zu sparen.
Entweder gibt es dafür einen Befehl, oder du könntest versuchen regelmäßig etwas abzurufen, z.B. Modus, etc.

Rollo

AuronTLG 6. Aug 2018 14:20

AW: Bluetooth-Verbindung in FMX mit Leica Disto X3/X4 Lasermesser in FMX
 
Das mit dem Informationen anfordern etc habe ich bereits probiert, funktioniert aber nicht.

Außerdem ist es definitiv keine gewollte Funktion, sondern wahrscheinlich irgendein technischer Unsinn,
denn ich habe zum Spaß mal ein Iphone X dran gehängt und das hält die Verbindung unbegrenzt.
Bei neueren Android-Smartphones scheint sich das ebenso zu verhalten.

Rollo62 6. Aug 2018 14:32

AW: Bluetooth-Verbindung in FMX mit Leica Disto X3/X4 Lasermesser in FMX
 
Also wer bricht die Verbindung ab, das Gerät oder das iPhone ?

Kann ich eigentlich nicht Bestätigen, aber natürlich fallen die Phones in den "Sleep-Modus", wenn du das meinst.

Solage das Phone wach bleibt hält sich bei mir auch die Verbindung, es
sei denn die Geräte schalten ab, oder ich komme aus der Reichweite.

Rollo

AuronTLG 7. Aug 2018 13:11

AW: Bluetooth-Verbindung in FMX mit Leica Disto X3/X4 Lasermesser in FMX
 
Der Laser scheint die Verbindung abzubrechen. Macht auch Sinn, da sämtliche anderen Laser dieses Problem nicht haben.
Und wie gesagt, das passiert auch bei den offiziellen Leica-Apps und hängt zudem vom Smartphone ab. Das Iphone X und ein neueres Samsung hatten z.B. keine Probleme. Also gut möglich, dass der bei dir nicht rumspinnt.

earlypearl 1. Nov 2018 13:46

AW: Bluetooth-Verbindung in FMX mit Leica Disto X3/X4 Lasermesser in FMX
 
Hi!
Ich kämpfe gerade mit einem Disto D510 und habe da so meine Probleme.

Der Disto wird mit DiscoverDevices gefunden, wenn ich jedoch versuche die Dienste mit device.DiscoverServices in OnEndDiscoverDevices abzurufen
erhalte ich die Fehlermeldung "Dieses Gerät ist nicht gekoppelt".

Hat Jemand einen Ahnung was da falsch läuft?

Ich meine ich hatte das vor langer Zeit schon einmal versucht und konnte zumindest die Dienste auslesen.

Code:
procedure TForm1.bleEndDiscoverDevices(const Sender: TObject;
  const ADeviceList: TBluetoothLEDeviceList);
  var
  i:integer;
begin

for i := 0 to adevicelist.Count-1 do  begin
  memo1.Lines.Add(adevicelist[i].DeviceName);
      if adevicelist[i].DeviceName = 'DISTO' then begin
            device:=adevicelist[i];

         device.DiscoverServices;
      end;
    end;
end;

Delphi 10.2 und Windows 10


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:08 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