Utilisation du protocole Classic Bluetooth

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Utilisation du Bluetooth


Puisque "Bluetooth Core Specification" définit depuis la version 4.0 différents types de protocoles "Bluetooth", tels que Bluetooth Low Energy, le protocole Bluetooth original est désormais connu sous le terme "Classic Bluetooth". Le protocole Classic Bluetooth fournit un taux de transfert beaucoup plus élevé que Bluetooth Low Energy, au coût d'une consommation d'énergie supérieure.

Pour implémenter le support de Classic Bluetooth dans vos applications :

Prise en charge des plates-formes

Plate-forme Supportée ?

Windows

YesC++11Feature.png

Mac OS X

YesC++11Feature.png

iOS

Android

YesC++11Feature.png
Remarque : Le périphérique iOS ne supporte pas Classic Bluetooth, il ne prend en charge que Bluetooth Low Energy.

Obtention d'une instance de TBluetoothManager

Pour utiliser la fonctionnalité Bluetooth de la RTL, vous devez inclure l'unité System.Bluetooth dans votre application, et appeler TBluetoothManager.Current pour obtenir une instance de TBluetoothManager. TBluetoothManager est la classe principale de l'implémentation Classic Bluetooth de la RTL.

Remarque : TBluetoothManager.Current renvoie toujours la même instance de TBluetoothManager. Vous n'avez pas besoin de plus d'une instance de TBluetoothManager.

Découverte et appairage avec des périphériques distants

Pour que votre application puisse se connecter à une application distante avec Classic Bluetooth, les périphériques exécutant chaque application doivent être préalablement appairés entre eux par le biais du Bluetooth.

Rendre un périphérique détectable

L'un des deux périphériques doit être détectable, c'est-à-dire que d'autres périphériques Bluetooth doivent être capables de détecter le périphérique via Classic Bluetooth.

Sur la plupart des plates-formes, vous pouvez demander à votre utilisateur de rendre détectable le périphérique exécutant votre application. Appelez TBluetoothManager.StartDiscoverable pour démarrer une requête et gérer l'événement TBluetoothManager.OnDiscoverableEnd. OnDiscoverableEnd se produit si votre utilisateur accepte de rendre détectable le périphérique.

Remarque : Vous ne pouvez demander qu'un périphérique soit détectable que pendant un certain laps de temps, avec des limites sur certaines plates-formes. Si ce délai est dépassé et que vous n'avez toujours pas effectué les étapes ci-après de découverte et d'appairage, vous devrez relancer une nouvelle requête de détection de périphérique.

Mac OS X n'autorise pas les applications à demander aux utilisateurs de rendre le périphérique détectable. Vous devez demander à votre utilisateur de rendre le périphérique détectable manuellement.

Découverte des périphériques distants

Seul l'un des périphériques est détectable, l'autre périphérique doit découvrir le périphérique détectable.

Appelez TBluetoothManager.StartDiscovery sur l'autre périphérique pour commencer une opération de découverte afin d'obtenir la liste des périphériques distants détectables. Gérez l'événement TBluetoothManager.OnDiscoveryEnd afin d'obtenir la liste des périphériques distants découverts dès que l'opération de découverte se termine. Vous pouvez accéder à la dernière liste de périphériques découverts à tout moment par le biais de la propriété TBluetoothManager.LastDiscoveredDevices.

Appairage avec un périphérique distant

Dès que votre application obtient la liste des périphériques distants, vous pouvez commencer une requête d'appairage avec l'un de ces périphériques (TBluetoothDevice).

Pour commencer une requête d'appairage, appelez TBluetoothManager.CurrentAdapter.Pair. L'opération d'appairage réelle est gérée par le système d'exploitation, qui guide votre utilisateur dans le processus d'appairage.

Pour savoir si l'opération d'appairage a réussi, vérifiez la valeur de TBluetoothDevice.IsPaired.

Etablissement d'une connexion à un périphérique distant appairé

Dès que le périphérique exécutant votre application est appairé avec un périphérique distant, vous pouvez vous connecter aux applications s'exécutant sur le périphérique distant via Classic Bluetooth.

Pour que deux applications s'exécutant sur des périphériques appairés se connectent via Classic Bluetooth :

  1. L'une des applications (serveur) doit publier un service. Pour publier un service, appelez TBluetoothManager.CreateServerSocket et enregistrez l'instance de TBluetoothServerSocket renvoyée.
  2. L'autre application (client) doit découvrir le service de l'application serveur et s'y connecter :
    1. Localisez dans TBluetoothManager.GetPairedDevices le périphérique distant (TBluetoothDevice) exécutant l'application serveur.
    2. Localisez dans TBluetoothDevice.LastServiceList le service (TBluetoothService) que vous souhaitez utiliser.
    3. Appelez TBluetoothDevice.CreateClientSocket pour obtenir un socket (TBluetoothSocket) à connecter au service distant. Pour spécifier le service distant, fournissez la propriété UUID du service à TBluetoothDevice.CreateClientSocket.
    4. Appelez TBluetoothSocket.Connect pour démarrer la connexion.
  3. A partir de l'application serveur, appelez TBluetoothServerSocket.Accept pour accepter la connexion entrante.

TBluetoothServerSocket.Accept renvoie un socket Classic Bluetooth régulier (TBluetoothSocket) déjà connecté au socket de l'application distante.

Envoi et réception des données

Dès qu'une instance de TBluetoothSocket est connectée à l'application distante, comme client ou serveur, vous pouvez envoyer ou recevoir des données de l'application distante sous forme d'un tableau d'octets. Pour envoyer et recevoir des données de l'application distante, utilisez respectivement TBluetoothSocket.SendData et TBluetoothSocket.ReadData.

Voir aussi