Python之蓝牙通信模块pybluez学习笔记
安装蓝牙通信模块pybluez
Windows下pybluez的安装
注:本文的开发环境为Windows10+Python3.7.3
pip install pybluez
- 安装过程中会出现如下图所示的问题:
产生这种问题的原因是windows系统没有安装相应的SDK,没有 Microsoft SDKs这个文件夹,解决办法如下:
windows7安装文件的下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=8279
windows10安装文件的下载地址:https://developer.microsoft.com/zh-cn/windows/downloads/windows-10-sdk
安装对应系统的SDK之前,最好先卸载系统里的Visual C++ 2010 Redistributable和.NET.Framework再安装对应的SDK
再次安装 pybluez还是有错误,查看安装目录,按照setup.py要求MS_SDK = r'Microsoft SDKs\Windows\v6.0A' 目录
windows7需要手动修改Microsoft SDKs下文件夹v7.1为v6.0A
windows10需要手动修改Microsoft SDKs下文件夹v10.0A为v7.0A
完成后再安装新的Visual C++ 2010 Redistributable和.NET.Framework
windows10经过以上步骤后,依然会出现如下的问题:
这种问题最简单的方法是装个visual studio2017以上的软件的C++编译环境,再次安装即可成功
Linux下pybluez的安装
安装pybluez模块之前先要安装libbluetooth-dev,否则会报错。
蓝牙通信模块pybluez的使用
选择蓝牙通信对象
通过用户友好的名字来寻找通信对象
import bluetoothtarget_name = "My Device"
target_address = Nonenearby_devices = bluetooth.discover_devices()for bdaddr in nearby_devices:if target_name == bluetooth.lookup_name( bdaddr ):target_address = bdaddrbreakif target_address is not None:print("found target bluetooth device with address ", target_address)
else:print("could not find target bluetooth device nearby")
查询设备服务
import bluetoothnearby_devices = bluetooth.discover_devices(lookup_names=True)
for addr, name in nearby_devices:print(" %s - %s" % (addr, name))services = bluetooth.find_service(address=addr)for svc in services:print("Service Name: %s" % svc["name"])print(" Host: %s" % svc["host"])print(" Description: %s" % svc["description"])print(" Provided By: %s" % svc["provider"])print(" Protocol: %s" % svc["protocol"])print(" channel/PSM: %s" % svc["port"])print(" svc classes: %s "% svc["service-classes"])print(" profiles: %s "% svc["profiles"])print(" service id: %s "% svc["service-id"])print("")
通过RFCOMM方式进行通信
采用类似于socket编程模型的方式进行蓝牙通信的编程
1.服务器端程序
import bluetoothserver_sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )port = 1
server_sock.bind(("",port))
server_sock.listen(1)client_sock,address = server_sock.accept()
print "Accepted connection from ",addressdata = client_sock.recv(1024)
print "received [%s]" % dataclient_sock.close()
server_sock.close()
2. 客户端程序
import bluetoothbd_addr = "01:23:45:67:89:AB"port = 1sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )
sock.connect((bd_addr, port))sock.send("hello!!")sock.close()
通过L2CAP方式进行通信
L2CAP的sockets方式几乎等同于RFCOMM的sockets方式,唯一的不同是通过L2CAP的方式,并且端口是0x1001到0x8FFF之间的奇数端口。默认的连接可以传送的可靠报文是672个字节。
1.服务器端程序
import bluetoothserver_sock=bluetooth.BluetoothSocket( bluetooth.L2CAP )port = 0x1001
server_sock.bind(("",port))
server_sock.listen(1)client_sock,address = server_sock.accept()
print "Accepted connection from ",addressdata = client_sock.recv(1024)
print "received [%s]" % dataclient_sock.close()
server_sock.close()
2.客户端程序
import bluetoothsock=bluetooth.BluetoothSocket(bluetooth.L2CAP)bd_addr = "01:23:45:67:89:AB"
port = 0x1001sock.connect((bd_addr, port))sock.send("hello!!")sock.close()
调整MTU大小
l2cap_sock = bluetooth.BluetoothSocket( bluetooth.L2CAP ).. # connect the socket.
bluetooth.set_l2cap_mtu( l2cap_sock, 65535 )
参考文献
http://people.csail.mit.edu/albert/bluez-intro/c212.html
https://draapho.github.io/2016/11/15/1616-python-ble/
Python之蓝牙通信模块pybluez学习笔记相关推荐
- Python基础教程-菜鸟教程学习笔记1
Python基础教程-菜鸟教程学习笔记1 文章目录 Python基础教程-菜鸟教程学习笔记1 前言 Python 简介 1. 第一个Python程序 2. Python 中文编码 3. 基本语法 1) ...
- Python预测 数据分析与算法 学习笔记(特征工程、时间序列)
微信公众号:数学建模与人工智能 GitHub - QInzhengk/Math-Model-and-Machine-Learning 第3章 探索规律 3.1 相关分析 相关关系是一种与函数关系相区别 ...
- Python可视化物理随机过程---pygame学习笔记2
Python可视化物理随机过程-pygame学习笔记2 文章目录 Python可视化物理随机过程---pygame学习笔记2 一.扩散现象的简单的介绍 二.代码实现 三.运行代码的效果展示 四.总结 ...
- python查看方法作用_python学习笔记1,新手小白也能看得懂
这是酸菜在风变编程上学习python时积累的学习笔记,希望能帮到同样也在学习中的小伙伴.持续更新~ 第0关 Print()函数 (1)不带引号:让计算机读懂括号里的内容,打印最终的结果 例:print ...
- python 面向对象(类)--学习笔记
面向对象是一种编程方式, 主要集中在类和对象的两个概念 python 中的类符合封装, 继承, 多态的特征 类 是一个模板, 是n多函数的集成 对象 是类的实例化 类的成员分为三大类:字段.方法.属性 ...
- python 坐标轴 单位刻度_Python学习笔记(matplotlib篇)--坐标轴刻度
python学习笔记--坐标轴刻度 所用的库及环境: ide:pycharm python环境:python3.7 matplotlib: matplotlib 1.11 numpy: nump ...
- python矩阵左除_matlab学习笔记
Matlab学习笔记 运算: 1. 算术运算(在矩阵意义下进行) +:要求矩阵同型,对应元素相加减,如果用标量和矩阵相加减,不同型就凉凉提示错误,那就将矩阵每个元素和数字相加减 -:同上 *: ...
- python的基本数据结构_Python学习笔记——基本数据结构
列表list List是python的一个内置动态数组对象,它的基本使用方式如下: shoplist = ['apple', 'mango', 'carrot', 'banana'] print 'I ...
- python的基本数据结构_python学习笔记-基本数据结构
Python 学习笔记-1 写在最前面,因为组内小伙伴要走,生信团队由原来的7个人,慢慢的变的只有我一个人了,需要紧急突击下python,因为有python的流程要交接维护 python 基本情况 代 ...
- python自训练神经网络_tensorflow学习笔记之简单的神经网络训练和测试
本文实例为大家分享了用简单的神经网络来训练和测试的具体代码,供大家参考,具体内容如下 刚开始学习tf时,我们从简单的地方开始.卷积神经网络(CNN)是由简单的神经网络(NN)发展而来的,因此,我们的第 ...
最新文章
- python教程是什么课文_新手快速入门Python必看这篇文章
- falsk-sqlalchemy 连接数据库出现 No module named ‘MySQLdb‘(笔记自用)
- !!基础---c# 下载网页+图片
- linux安装截图讲解01
- zabbix监控mysql的性能_zabbix2.4.2实战监控mysql5.6性能
- 英语26个字母使用频度
- 建筑电气工程设计常用图形和文字符号_怎么看懂建筑电气工程图?用最直白方式,教你基础识图!超级详细...
- python2.7出现的错误
- java获取路径中的文件名_3种Java从文件路径中获取文件名的方法
- 敏感性分析算法 程序_计算机程序设计艺术(TAOCP)精读笔记1 - 算法分析真正应该有的样子 Part 1...
- 京瓷1020手动双面打印提示_自动双面打印时纸张是如何被翻转的?
- 软件实施工程师项目经验
- UE4蓝图基础04-变量和数组
- 基于springboot的paypal支付demo
- Hyperledger Fabric无排序组织以Raft协议启动多个Orderer服务、TLS组织运行维护Orderer服务
- python打开xls_用Python读取Excel(*.xls)文件——xlrd模块的使用
- Openwrt-USB网络共享
- libtool已经安装了 但是报错libtool not found, please install first
- JavaSE_笔试题_判断题1
- 关于五常膝关节矫形器的介绍