安装蓝牙通信模块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学习笔记相关推荐

  1. Python基础教程-菜鸟教程学习笔记1

    Python基础教程-菜鸟教程学习笔记1 文章目录 Python基础教程-菜鸟教程学习笔记1 前言 Python 简介 1. 第一个Python程序 2. Python 中文编码 3. 基本语法 1) ...

  2. Python预测 数据分析与算法 学习笔记(特征工程、时间序列)

    微信公众号:数学建模与人工智能 GitHub - QInzhengk/Math-Model-and-Machine-Learning 第3章 探索规律 3.1 相关分析 相关关系是一种与函数关系相区别 ...

  3. Python可视化物理随机过程---pygame学习笔记2

    Python可视化物理随机过程-pygame学习笔记2 文章目录 Python可视化物理随机过程---pygame学习笔记2 一.扩散现象的简单的介绍 二.代码实现 三.运行代码的效果展示 四.总结 ...

  4. python查看方法作用_python学习笔记1,新手小白也能看得懂

    这是酸菜在风变编程上学习python时积累的学习笔记,希望能帮到同样也在学习中的小伙伴.持续更新~ 第0关 Print()函数 (1)不带引号:让计算机读懂括号里的内容,打印最终的结果 例:print ...

  5. python 面向对象(类)--学习笔记

    面向对象是一种编程方式, 主要集中在类和对象的两个概念 python 中的类符合封装, 继承, 多态的特征 类 是一个模板, 是n多函数的集成 对象 是类的实例化 类的成员分为三大类:字段.方法.属性 ...

  6. python 坐标轴 单位刻度_Python学习笔记(matplotlib篇)--坐标轴刻度

    python学习笔记--坐标轴刻度 所用的库及环境: ide:pycharm python环境:python3.7 matplotlib:   matplotlib 1.11 numpy:  nump ...

  7. python矩阵左除_matlab学习笔记

    Matlab学习笔记 运算: 1.     算术运算(在矩阵意义下进行) +:要求矩阵同型,对应元素相加减,如果用标量和矩阵相加减,不同型就凉凉提示错误,那就将矩阵每个元素和数字相加减 -:同上 *: ...

  8. python的基本数据结构_Python学习笔记——基本数据结构

    列表list List是python的一个内置动态数组对象,它的基本使用方式如下: shoplist = ['apple', 'mango', 'carrot', 'banana'] print 'I ...

  9. python的基本数据结构_python学习笔记-基本数据结构

    Python 学习笔记-1 写在最前面,因为组内小伙伴要走,生信团队由原来的7个人,慢慢的变的只有我一个人了,需要紧急突击下python,因为有python的流程要交接维护 python 基本情况 代 ...

  10. python自训练神经网络_tensorflow学习笔记之简单的神经网络训练和测试

    本文实例为大家分享了用简单的神经网络来训练和测试的具体代码,供大家参考,具体内容如下 刚开始学习tf时,我们从简单的地方开始.卷积神经网络(CNN)是由简单的神经网络(NN)发展而来的,因此,我们的第 ...

最新文章

  1. python教程是什么课文_新手快速入门Python必看这篇文章
  2. falsk-sqlalchemy 连接数据库出现 No module named ‘MySQLdb‘(笔记自用)
  3. !!基础---c# 下载网页+图片
  4. linux安装截图讲解01
  5. zabbix监控mysql的性能_zabbix2.4.2实战监控mysql5.6性能
  6. 英语26个字母使用频度
  7. 建筑电气工程设计常用图形和文字符号_怎么看懂建筑电气工程图?用最直白方式,教你基础识图!超级详细...
  8. python2.7出现的错误
  9. java获取路径中的文件名_3种Java从文件路径中获取文件名的方法
  10. 敏感性分析算法 程序_计算机程序设计艺术(TAOCP)精读笔记1 - 算法分析真正应该有的样子 Part 1...
  11. 京瓷1020手动双面打印提示_自动双面打印时纸张是如何被翻转的?
  12. 软件实施工程师项目经验
  13. UE4蓝图基础04-变量和数组
  14. 基于springboot的paypal支付demo
  15. Hyperledger Fabric无排序组织以Raft协议启动多个Orderer服务、TLS组织运行维护Orderer服务
  16. python打开xls_用Python读取Excel(*.xls)文件——xlrd模块的使用
  17. Openwrt-USB网络共享
  18. libtool已经安装了 但是报错libtool not found, please install first
  19. JavaSE_笔试题_判断题1
  20. 关于五常膝关节矫形器的介绍

热门文章

  1. 西门子S7-200SMART四种密码解密软件
  2. Django Book 中对于MVC的阐释
  3. JAVA 日期格式化
  4. RESTClient使用教程
  5. 局域网传文件_安卓用户福音!让文件传输摆脱数据线的束缚,自由穿梭
  6. linux下maxwell安装教程,Ubuntu下若干软件的安装方法
  7. MySql数据恢复方法个人总结
  8. MySQL 数据恢复 —— 使用 data 目录
  9. 女士品茶——统计学如何变革了科学和生活1
  10. ADS2020 Crack使用教程