Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   iOS Firemonkey IOS Bluetooth Verbindung (https://www.delphipraxis.net/182322-firemonkey-ios-bluetooth-verbindung.html)

XXcD 16. Okt 2014 18:03

Firemonkey IOS Bluetooth Verbindung
 
Hallo,
ich bin jetzt schon eine ganze Weile auf der Suche nach einer Möglichkeit eine Bluetooth Verbindung über ein IOS Gerät herzustellen.
Das ganze soll mit Firemonkey gemacht werden, da ich mit XCode nicht wirklich gut klar komme. Die Verbindung soll zu einem Bluetooth RS232 Modul hergestellt werden.

Hat sich schonmal jemand damit auseinander gesetzt und kann mir weiterhelfen ob es überhaupt eine Möglichkeit gibt?

mkinzler 16. Okt 2014 18:08

AW: Firemonkey IOS Bluetooth Verbindung
 
Offiziell wird Bluetooth ab XE7 unterstützt, vorher war dies nur per JNI möglich

http://www.fmxexpress.com/tag/bluetooth/
http://docwiki.embarcadero.com/RADSt...%2BBuilder_XE7
http://www.youtube.com/watch?v=LcACJNNCkFo

MEissing 16. Okt 2014 18:28

AW: Firemonkey IOS Bluetooth Verbindung
 
Keine Chance bei SPP/seriell....

Ausnahme: Apple MFi Programm ($$$$$$)

XXcD 16. Okt 2014 18:46

AW: Firemonkey IOS Bluetooth Verbindung
 
Danke, genau die Antwort habe ich erwartet :)

MEissing 16. Okt 2014 19:01

AW: Firemonkey IOS Bluetooth Verbindung
 
Das ist halt von Apple "verboten" :-)

Können wir auch nicht ändern.... Sorry

XXcD 16. Okt 2014 19:46

AW: Firemonkey IOS Bluetooth Verbindung
 
Ich werde schon eine Lösung finden :)
Es geht nämlich darum, dass ich einen Multicopter mit einem Multiwii Board
Über mein iPad konfigurieren möchte.

greenmile 17. Okt 2014 08:29

AW: Firemonkey IOS Bluetooth Verbindung
 
Zitat:

Zitat von MEissing (Beitrag 1276296)
Das ist halt von Apple "verboten" :-)

Können wir auch nicht ändern.... Sorry

Manchmal (oder öfters?) sind die Apple's echt Spaßbremsen.

MEissing 17. Okt 2014 12:46

AW: Firemonkey IOS Bluetooth Verbindung
 
Siehe Googles:
Die verbieten seit Android 4.4.2 das direkte Schreiben auf die SD Karte....

;-)

mensch72 18. Okt 2014 17:13

AW: Firemonkey IOS Bluetooth Verbindung
 
Ab BT4 LowEnergy hat Apple alle Services freigegeben.

Vorher gingen nur BT-EDR Geräte mit Apple Chip, mit BT4-LE können beliebige serielle Gegenstellen mit XE5..XE7 programmiert werden, sofern diese auch BT4-LowEnergy oder BT4-SmartReady kompatibel sind.

Die Apple Sperre gilt also nur (noch) für die alten BT Standards.

cipher 4. Dez 2017 21:42

AW: Firemonkey IOS Bluetooth Verbindung
 
Sorry, für das rauskramen eines so alten Threads. Aber meine Suche hat bisher nichts brauchbares geliefert.
Ich würde gerne über BLE genau den seriellen Service nutzen und simplen Text zwischen einem Bluetooth-Modul und einer IOS App hin und her schicken mit 9600 Baud.

Beim Scannen wird mir das Modul in der App aufgelistet. Aber wie geht man hier weiter voran? Wie kann ich Daten senden oder empfangen? Ich stehe hier auf dem Schlauch.

mensch72 4. Dez 2017 22:01

AW: Firemonkey IOS Bluetooth Verbindung
 
..."Ich würde gerne über BLE genau den seriellen Service nutzen und simplen Text zwischen einem Bluetooth-Modul und einer IOS App hin und her schicken mit 9600 Baud."...

Schlechte Nachricht:
Seriell über BLE int NICHT STANDARDISIERT!

Gute Nachricht:
IOS und BLE funktionieren super

=> soll heißen ohne eine passende Doku des BLE "(Private)Services" und der zugehörigen "Charateristics" hast du keine Möglichkeit irgendein fremdes dir unbekanntes BLE Device zur Übertragung simpler serieller Daten zu nutzen
=> BLE ist physich "Blockbasiert".. mehr wie 20Bytes on Block gehen da nicht direkt, Der BLE Standard sieht "MultiBlock" Kommunikation vor, aber dies wird praktisch kaum verwendet
=> MicroChip RN4020 oder RN4871 können ein von Microchip entwickeltes propitäres Verfahren für simples "serial over BLE", Nordic und einige andere bieten ähnliches.. aber nichts ist untereinander kompatibel!
=> nutze "google" um den Hersteller deines BLE Moduls zu kontaktieren und den zur Herausgabe des Services und der benötigten Characteristics sowie des log. Blockprotokolls zu bewegen, nur so kannst du deine "seriellen Daten" BlockByBlock irgendwie per BLE übertragen

cipher 4. Dez 2017 22:26

AW: Firemonkey IOS Bluetooth Verbindung
 
Ok, zu meinem Modul (SH-HC-08) habe ich in der Doku folgendes gefunden:

Services UUIDs: FFE0

UUID: FFE0
Characteristic 1
Properties: Read, Write Without Response, Notify
UUID: FFE1

Ich kann mit der App LightBlue auf dieser Characteristic 1 Daten (in HEX Form) schicken und es kommt am BLE Empfänger an.
Wenn ich "Start Listening" mache, dann sehe ich sogar die Antworten in der App.

Reichen diese Parameter aus um auch selber so eine simple App mit der TBluetoothLE Komponente zu erstellen, oder denke ich mir das jetzt zu einfach?

Rollo62 5. Dez 2017 07:47

AW: Firemonkey IOS Bluetooth Verbindung
 
Die Daten die vom Modul zur App kommen kannst du normalerweise einfach aneinanderhängen.
Das ist zwar kein 9600 Baud, aber man braucht das ja auch normalerweise nicht in einem festen Timing.

Ich nehme Alles was per Notify geschickt wird erstmal in einem RingBuffer auf und analysiere das dann entsprechend später.

Wenn man Daten an das Modul schickt geht das ähnlich, allerdings hängt es dann vom Modul ab was es damit macht.
Wenn es z.B. alle Eingänge die per WriteNoResponse bekommt in gleicher Weise wie oben puffert und nach draussen als 9600 Baud streamt dann wäre das wohl was du Erreichen wolltest.
Aber wie schon gesagt, die BLE Kommunikation is blockbasiert, und festes Timing wie RS232 gibt es da normalerweise auch nicht.

Es gibt auch günstige BLE-Sniffer mit denen man die Kommunikation etwas "belauschen" kann, um vielleicht mehr aus einem unbekannten Protokoll rauszuhören.

Wenn der Hersteller des Dongles einen geheimen Code oder Verschlüsselung eigebaut hat wirst du wohl Pech haben, dann funktioniert es nur zwischen gleichen Protokollen.

Rollo

cipher 5. Dez 2017 09:32

AW: Firemonkey IOS Bluetooth Verbindung
 
Das klingt doch super. Damit kann ich leben. Auf Timing bin ich nicht angewiesen. Will nur einige Kommandos an das Modul schicken können und die Antworten empfangen.
Dafür sollte das also völlig ausreichen.

Wird die Kommunikation zwischen iPhone und Bluetooth LE Modul standardmäßig irgendwie verschlüsselt auf Protokoll-Ebene? Oder muss man selber irgendwie für Sicherheit sorgen, wenn man sensible Daten übertragen will?

Rollo62 5. Dez 2017 11:02

AW: Firemonkey IOS Bluetooth Verbindung
 
Man macht das über Characteristics, in deinem Fall vielleicht als String.
Du registrierst dich bei einen Notifier und der schickt dir dann einen Event wenn was Neues ankommt.
Wenn du senden willst schickst du ein WriteCharacteristic raus, am Besten schaust du dir die Beispiele dazu an.
Der ganze Ablauf zu einer Verbindung ist leider nicht immer so Problemlos, aber wenn die Verbindung steht funktioniert es bei mir zumindest immer so wie es soll.
Das ganze Handling zwischendurch macht eigentlich das Module mit Apple aus,
ich hatte noch nie Probleme mit verlorenen Paketen oder ähnliches.

Rollo

himitsu 5. Dez 2017 12:37

AW: Firemonkey IOS Bluetooth Verbindung
 
Zitat:

Zitat von mensch72 (Beitrag 1387943)
Schlechte Nachricht:
Seriell über BLE int NICHT STANDARDISIERT!

BLE ist halt für "Kurzzeitverbindungen" ausgelegt, also kurze/kleine Befehle und dann gleich wieder aus.
Seriell und Streaming allgemein ist dagegen per se eine Langzeitdauerverbingung.

kurze Texte / kleine Befehle kann man aber mit anderen Protokollen/Profilen im BLE auch sehr gut verschicken.

cipher 5. Dez 2017 13:44

AW: Firemonkey IOS Bluetooth Verbindung
 
Vielen Dank für die Hilfe.
Ich habe es inzwischen geschafft Strings zu senden und zu empfangen.

Rollo62 5. Dez 2017 17:35

AW: Firemonkey IOS Bluetooth Verbindung
 
Zitat:

BLE ist halt für "Kurzzeitverbindungen"
Also die Verbindung bleibt dauerhaft bestehen, solange man nicht disconnected oder
sonstwas passiert.
Womöglich legen sich die BLE Beteiligten schlafen wenn nichts weiter gesendet wird,
aber das Ganze Handling regeln die Module und das Phone unter sich aus.
BLE ist auf jeden Fall auch bei Abbruch für ein schnelles Wiederverbinden ausgelegt,
wenn es schonmal verbunden war.

Wir haben hier Systeme die um die 1mA brauchen, auch wenn dauernd etwas gesendet wird, aber es geht dabei in die Richtung 4800-9600 Baud, also das sind keine Videostreams natürlich :stupid:
Wenn disconnected brauchen die nur ein paar uA.
Genau da gibt es ziemliche Unterschiede wenn die Module aktiv sind.

Natürlich ist dies Art streaming im BLE nicht der Standard, für die standarisierten gibt es GATT Profile, aber da gibt es eben nur ein paar "Heartrate-Sensor", etc. die bei uns natürlich nicht passen.
Da werden die Daten als Byte, Integer übertragen, aber da müssen die Beteiligten Module dann auch GATT richtig verstehen.
Bei unseren System ist das String-Senden die bessere Alternative als sich irgendein GATT Protokoll umzubiegen (am ehesten würde noch so ein TI-SensorTag passen).

Das GATT wird wohl dann Wichtig wenn man kompatibel auch mit anderen 3rd Party-Systemen sein möchte/muss, wir brauchen aber nur unsere Systeme mit unserer Software zu betreiben.
Dan müssen alle Beteiligten exakt GATTisch reden damit die Kommunikation problemlos läuft.

Rollo


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