Programmation Bluetooth avec Python 3 – Bien choisir son serveur d impression

Author: Titanfall —

Short summary: écrit 21 avrilst2013 Cet article présente les techniques de base pour communiquer via Bluetooth avec Python 3.3 et versions ultérieures (à l'aide de sockets Python). Quelques exemples simples de communication via Bluetooth avec prises sera affiché. Des exemples PyBluez seront également présentés pour Comparaison. Les deux options À l’heure actuelle, le moyen le plus documenté […]

Quick overview

Site
Tutos GameServer
Canonical URL
https://tutos-gameserver.fr/2019/09/27/programmation-bluetooth-avec-python-3-bien-choisir-son-serveur-d-impression/
LLM HTML version
https://tutos-gameserver.fr/2019/09/27/programmation-bluetooth-avec-python-3-bien-choisir-son-serveur-d-impression/llm
LLM JSON version
https://tutos-gameserver.fr/2019/09/27/programmation-bluetooth-avec-python-3-bien-choisir-son-serveur-d-impression/llm.json
Manifest
https://tutos-gameserver.fr/llm-endpoints-manifest.json
Estimated reading time
5 minutes (292 seconds)
Word count
972

Key points

Primary visual

Programmation Bluetooth avec Python 3

 – Bien choisir son serveur d impression
Main illustration associated with the content.

Structured content

écrit 21 avrilst2013 Cet article présente les techniques de base pour communiquer via Bluetooth avec Python 3.3 et versions ultérieures (à l'aide de sockets Python). Quelques exemples simples de communication via Bluetooth avec prises sera affiché. Des exemples PyBluez seront également présentés pour Comparaison.

Les deux options À l’heure actuelle, le moyen le plus documenté de communiquer avec Python via Bluetooth est d’utiliser PyBluez. Auparavant, PyBluez ne supportait que Python 2. En janvier 2014, ils ont publié une version Python 3. Les sockets Python natifs de Python 3.3 prennent en charge la communication Bluetooth. Malheureusement, il existe très peu de documentation disponible décrivant Comment utiliser les sockets Python pour communiquer via Bluetooth. Bien que l’utilisation de Bluetooth avec ces sockets puisse être facile pour quelqu'un qui sait déjà utiliser les sockets Python, le manque de documentation laisse de nombreuses personnes ignorantes de l’existence même de cette méthode d’utilisation de Bluetooth. Depuis que PyBluez a été porté sur Python 3, l’utilisation des sockets Python natifs a une utilisation limitée. Compétence requise: trouver l'adresse MAC d'un adaptateur Bluetooth Pour exécuter les exemples, l'adresse MAC de l'adaptateur Bluetooth utilisé par le serveur doit être connue. L'application client utilise cette adresse pour se connecter au serveur. Sous Linux, vous pouvez obtenir une liste de tous les périphériques Bluetooth disponibles et de leurs adresses MAC à l’aide de la commande hciconfig, ainsi:

Messagerie du client Cette application connecte deux appareils via Bluetooth et permet à l'un d'envoyer des messages à l'autre. Le périphérique d'envoi fonctionne socketClient.pyet le périphérique de réception fonctionne socketServer.py. Ces scripts sont présentés ci-dessous, en utilisant d’abord les sockets Python, puis PyBluez:

Sockets python Client (socketClient.py)

1 2 3 4 5 6 sept 8 9 dix 11 12 13 14 15 16 17

"" " Un simple script Python pour envoyer des messages à un serveur via Bluetooth en utilisant Sockets Python (avec Python 3.3 ou supérieur). "" "

importation prise

serverMACAddress = '00: 1f: e1: dd: 08: 3d ' Port = 3 s = prise.prise(prise.AF_BLUETOOTH, prise.SOCK_STREAM, prise.BTPROTO_RFCOMM) s.relier((serverMACAddress,Port)) tandis que 1: texte = contribution() si texte == "quitter": Pause s.envoyer(octets(texte, 'UTF-8')) s.proche()

Serveur (socketServer.py)

1 2 3 4 5 6 sept 8 9 dix 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

"" " Un simple script Python pour recevoir des messages d'un client sur Bluetooth utilisant des sockets Python (avec Python 3.3 ou supérieur). "" "

importation prise

hostMACAddress = '00: 1f: e1: dd: 08: 3d ' # L'adresse MAC d'un adaptateur Bluetooth sur le serveur. Le serveur peut avoir plusieurs adaptateurs Bluetooth. Port = 3 # 3 est un choix arbitraire. Cependant, il doit correspondre au port utilisé par le client. arriéré = 1 Taille = 1024 s = prise.prise(prise.AF_BLUETOOTH, prise.SOCK_STREAM, prise.BTPROTO_RFCOMM) s.lier((hostMACAddress,Port)) s.écoute(arriéré) essayer: client, adresse = s.Acceptez() tandis que 1: Les données = client.recv(Taille) si Les données: impression(Les données) client.envoyer(Les données) sauf: impression("Prise de fermeture") client.proche() s.proche()

En passant, ce code est presque identique au code requis pour créer une application client-serveur sur Internet. Tout ce qui doit être changé, ce sont les deux lignes:

1 2 3 4 5 6 sept 8 9

# Pour le serveur s = prise.prise(prise.AF_INET, prise.SOCK_STREAM) s.lier(("192.168.1.17",50001)) # L'adresse MAC Bluetooth et le port RFCOMM sont remplacés par une adresse IP et un port TCP.

# Pour le client s = prise.prise(prise.AF_INET, prise.SOCK_STREAM) s.relier(("192.168.1.17",50001))

# Remarque: il s’agit d’adresses IP et de ports TCP arbitraires.

PyBluez Pour comparer, voici l’application fonctionnellement identique écrite à l’aide de la bibliothèque PyBluez. Client (PyBluezClient.py)

1 2 3 4 5 6 sept 8 9 dix 11 12 13 14 15 16 17

"" " Un simple script Python pour envoyer des messages à un serveur via Bluetooth en utilisant PyBluez (avec Python 2). "" "

importation Bluetooth

serverMACAddress = '00: 1f: e1: dd: 08: 3d ' Port = 3 s = Bluetooth.Prise Bluetooth(Bluetooth.RFCOMM) s.relier((serverMACAddress, Port)) tandis que 1: texte = entrée brute() # Remarque: passage à l'ancien (Python 2) raw_input si texte == "quitter": Pause s.envoyer(texte) chaussette.proche()

Serveur (PyBluezServer.py)

1 2 3 4 5 6 sept 8 9 dix 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

"" " Un simple script Python pour recevoir des messages d'un client sur Bluetooth en utilisant PyBluez (avec Python 2). "" "

importation Bluetooth

hostMACAddress = '00: 1f: e1: dd: 08: 3d ' # L'adresse MAC d'un adaptateur Bluetooth sur le serveur. Le serveur peut avoir plusieurs adaptateurs Bluetooth. Port = 3 arriéré = 1 Taille = 1024 s = Bluetooth.Prise Bluetooth(Bluetooth.RFCOMM) s.lier((hostMACAddress, Port)) s.écoute(arriéré) essayer: client, clientInfo = s.Acceptez() tandis que 1: Les données = client.recv(Taille) si Les données: impression(Les données) client.envoyer(Les données) # Écho au client sauf: impression("Prise de fermeture") client.proche() s.proche()

Conclusion PyBluez est le moyen le plus efficace de communiquer via Bluetooth en utilisant Python. Les sockets Python peuvent maintenant être utilisés pour la communication Bluetooth (depuis Python 3.3). Pour une application simple, le code est presque identique. Cependant, pour certaines tâches, telles que la découverte de périphériques et les publications de services Bluetooth, il ne semble pas possible de les exécuter à l'aide de sockets Python. En conséquence, PyBluez a surpassé à bien des égards les sockets Python. Cette question Stackoverflow traite de certaines des limitations des sockets Python pour Bluetooth. Lectures complémentaires Il y a peu ou pas d'informations sur la programmation Bluetooth avec les sockets Python. Il y a beaucoup d'informations sur PyBluez. Voici quelques ressources utiles:

Bluetooth Essentials pour les programmeurs Couvre de nombreux langages de programmation et utilise PyBluez avec Python. Idéal pour commencer vite et gagner la compréhension en cours de route. Exemples PyBluez Exemple de code couvrant diverses tâches Bluetooth.

Click to rate this post! [Total: 0 Average: 0]

Topics and keywords

Themes: Serveur d'impression

License & attribution

License: CC BY-ND 4.0.

Attribution required: yes.

Manifest: https://tutos-gameserver.fr/llm-endpoints-manifest.json

LLM Endpoints plugin version 1.1.2.