Projet

Général

Profil

Actions

Wrapper Python pour la gestion de connexions Bluetooth PC-Android » Historique » Révision 5

« Précédent | Révision 5/44 (diff) | Suivant »
Anonyme, 01/07/2013 22:01


Wrapper Python pour la gestion de connexions Bluetooth PC-Android

Remerciements

Nous souhaiterions tout d'abord remercier M. Jacques LAFFONT pour le sujet qui nous a été attribué. Ce fut une bonne expérience que de travailler sur un langage récent et puissant qui devient de plus en plus répandu de nos jours. Nous aimerions également remercier toutes les personnes exétieurs qui nous ont aidé tout au long de ce projet.

Introduction

Le but de ce projet était de développer, dans un seul langage, un wrapper permettant de gérer des connexions Bluetooth entre des PC sous Windows et des smartphones sous Android. Ce wrapper devait être codé en Python, et on devait donc avoir une interface commune quel que que soit le support. Pour cela, notre tuteur de projet nous avait conseillé l'utilisation de Kivy.
Concernant le Bluetooth, on nous avait également dirigé vers Pybluez et Jython pour la gestion respectivement sur PC sous Windows/Linux et sur Android.

Sommaire

Kivy : Deux OS, une seule interface

...

Pybluez et la gestion du Bluetooth sur PC

Pybluez est une librairie Python permettant aux développeurs de coder rapidement et facilement des applications utilisant la technologie Bluetooth.
La dernière version en date sur le site officiel date de Novembre 2009 et supporte Python 2.6. En fouillant un peu, ou peut trouver une version plus récente (Octobre 2012) en beta supportant Python 2.7, mais pas au delà. Il a donc fallu utiliser cette version de Python et non pas la plus récente pour pouvoir exploiter cette librairie.

L’utilisation de cette bibliothèque pour appeler simplement les fonctionnalités Bluetooth proposées sur Linux ou Windows XP/Vista/7/8 se faire de manière instinctive. Pour ce qui est de Windows, il ne faut pas oublier d’avoir le SDK Windows d’installé (disponible ici : http://www.microsoft.com/en-us/download/details.aspx?id=8279).

Voici par exemple notre fonctionnalité d’envoi d’un message texte (passé en paramètre)

    def envoyer(self, texte, *l):
        addr = "5C:96:9D:8A:AE:F6" 
        uuid = "94f39d29-7d6d-437d-973b-fba39e49d4ee" 

        service_matches = find_service(uuid = uuid, address = addr)

        first_match = service_matches[0]
        port = first_match["port"]
        name = first_match["name"]
        host = first_match["host"]

        # Create the client socket
        sock=BluetoothSocket(RFCOMM)
        sock.connect((host, port))

        sock.send(texte)
        sock.close()

L’ UUID (ou Universal Unique IDentifier) est, comme son nom l’indique, un identifiant unique codé sur 128 bits afin d’identifier le service Bluetooth auquel on souhaite envoyer. En effet, on ne peut pas se baser simplement sur l’adresse MAC d’une machine, celles-ci pouvant mettre à disposition plusieurs services Bluetooth.

Avec l’UUID et l’adresse MAC de la machine (ici saisie en dur dans le code), un simple appel à la fonction find_service permet de trouver le service correspondant, à condition que celui-ci soit présent et activé.
Une fois trouvé, on récupère ses informations qui seront nécessaires à la création d’un socket et à la connexion de celui-ci à l’hôte. Les fonctions send() et close() permettent l’envoi du message texte puis la fermeture du socket.

Conclusion

Mis à jour par Anonyme il y a presque 12 ans · 5 révisions