Flutter pour les appareils Bluetooth Md Sadab Wasim Suivre 30 déc.2019 · 3 min de lecture Comment connecter vos appareils BLE à l'application Flutter et faire quelque chose. Jusqu'à présent, j'ai vu de nombreux articles sur le flutter avec les appareils BLE, mais pour être honnête, la plupart d'entre eux ne vous parleront que de la pointe de l'iceberg. Mais, maintenant, je suis ici pour partager mes expériences avec vous sur la façon de se connecter et de jouer avec l'appareil BLE. Photo de Luke Chesser sur Unsplash Choses que nous allons couvrir dans cet article: 1. Comment connecter votre appareil BLE à une application Flutter. 2. Comment découvrir les services fournis par votre appareil BLE. 3. Comment obtenir des données à partir de ces services / caractéristiques. 4. Et enfin comment envoyer des commandes à l'appareil BLE. Première phase Découvrez et connectez-vous à l'appareil Tout d'abord, nous allons utiliser le package flutter_blue pour tous les types de communication avec le périphérique BLE. flutter_blue: ^ 0,6,3 + 1 Nous l'initialiserons dans la méthode initstate () import 'package: flutter_blue / flutter_blue.dart'; // Nous rendons ces trois choses globales afin que nous// pouvons vérifier l'état et l'appareil plus tard dans cette classe Périphérique BluetoothDevice; État BluetoothState; BluetoothDeviceState deviceState; /// Initialisation et écoute de l'état de l'appareil @override void initState () { super.initState (); // vérifie l'état actuel du bluetooth FlutterBlue.instance.state.listen ((état) { if (état == BluetoothState.off) { // Alerte l'utilisateur pour activer le Bluetooth. } else if (état == BluetoothState.on) { // si le bluetooth est activé, continuez. // Assurez-vous que le GPS de l'appareil de l'utilisateur est activé. scanForDevices (); } }); } Rechercher un appareil et arrêter les méthodes de scan ///// **** Analyser et arrêter les méthodes Bluetooth ***** ///// void scanForDevices () async { scanSubscription = bluetoothInstance.scan (). listen ((scanResult) async { if (scanResult.device.name == "your_device_name") { print ("périphérique trouvé"); // Attribution d'un périphérique Bluetooth périphérique = scanResult.device; // Après cela, nous arrêtons la recherche de périphérique stopScanning (); } }); } void stopScanning () { bluetoothInstance.stopScan (); scanSubscription.cancel (); } Seconde phase Découvrez les services fournis par l'appareil Connectez-vous à l'appareil ///// ******* Méthodes de manipulation des appareils Bluetooth ******** ////// connectToDevice () async { // flutter_blue nous facilite la vie attendre device.connect (); // Après la connexion, commencez à découvrir les services DiscoverServices (); } Découvrez les services et obtenez la bonne caractéristique // AJOUTEZ VOS PROPRES SERVICES ET CHAR UUID, CHAQUE APPAREIL A UN UUID DIFFÉRENT // dispositif Caractéristiques exclusives du service ISSC static const ISSC_PROPRIETARY_SERVICE_UUID = "49535343 - *****"; // caractère de périphérique pour les caractéristiques ISSC static const UUIDSTR_ISSC_TRANS_TX = "49535343-4554 - *****"; static const UUIDSTR_ISSC_TRANS_RX = "49535343-8841 - ****"; // Cette caractéristique pour envoyer la commande à l'appareil BluetoothCaractéristique c; // Ce flux sert à prendre la valeur de la caractéristique // à lire les données fournies par l'appareil Stream <List <int>> listStream; DiscoverServices () async { List <BluetoothService> services = attendre device.discoverServices (); // vérification de chaque service fourni par l'appareil services.forEach ((service) { if (service.uuid.toString () == ISSC_PROPRIETARY_SERVICE_UUID) { service.characteristics.forEach ((caractéristique) { if (caractéristique.uuid.toString () == UUIDSTR_ISSC_TRANS_RX) { // Mise à jour de la caractéristique pour effectuer l'opération d'écriture. c = caractéristique; } else if (caractéristique.uuid.toString () == UUIDSTR_ISSC_TRANS_TX) { // Mise à jour du flux pour effectuer l'opération de lecture. listStream = caractéristique.valeur; caractéristique.setNotifyValue (! caractéristique.isNotifying); } }); } }); } Troisième phase Obtenir les données des services / caractéristiques Nous utiliserons streamBuilder pour écouter la valeur de listStream StreamBuilder <Liste <int>> ( stream: listStream, // ici nous utilisons la valeur de notre char donnée initiale: [], générateur: (contexte BuildContext, instantané AsyncSnapshot <List <int>>) { if (snapshot.connectionState == ConnectionState.active) { // Dans cette méthode, nous interpréterons les données reçues interprétReceivedData (currentValue); Centre de retour ( enfant: Texte ('Nous trouvons les données ..') ); } autre { return SizedBox (); } }, ); Interpréter les données reçues de l'appareil // VOIR LE TYPE DE COMMANDES QUE VOTRE APPAREIL VOUS DONNE ET CE QUE CELA SIGNIFIE interprétReceivedData (données de chaîne) async { if (données == "abt_HANDS_SHAKE") { // Faites quelque chose ici ou envoyez la commande suivante à l'appareil sendTransparentData ('Bonjour'); } autre { print ("Déterminer quoi faire avec $ data"); } } Quatrième et dernière phase Envoyer des commandes à l'appareil Utilisez cette méthode pour envoyer des commandes sendTransparentData (String dataString) async { // Encodage de la chaîne List <int> data = utf8.encode (dataString); if (deviceState == BluetoothDeviceState.connected) { attendre c.write (données); } } C'est tout avec ces méthodes, vous pouvez pratiquement tout faire avec votre appareil BLE. Si vous rencontrez un problème ou rencontrez un bogue, veuillez commenter ici ou voir la section problèmes du plugin flutter_blue . Le projet est une autre chaîne youtube incroyable pour voir des vidéos liées à l'appareil BLE, il fait des tonnes de bonnes choses avec des scintillements et différents types d'appareils Bluetooth. Paix dehors 💙 Communauté Flutter Les derniers Tweets de Flutter Community (@FlutterComm). Suivez pour recevoir des notifications de nouveaux articles et packages de… www.twitter.com Bluetooth Battement Dard Android iOS À Aidez-Légal propos moi de Téléchargez l'application Medium