python实现蓝牙通信
安装和示例
linux下安装
sudo apt-get install python-pip libglib2.-dev
sudo pip install bluepy
官方示例
import btle class MyDelegate(btle.DefaultDelegate):
def __init__(self, params):
btle.DefaultDelegate.__init__(self)
# ... initialise here def handleNotification(self, cHandle, data):
# ... perhaps check cHandle
# ... process 'data' # Initialisation ------- p = btle.Peripheral( address )
p.setDelegate( MyDelegate(params) ) # Setup to turn notifications on, e.g.
# svc = p.getServiceByUUID( service_uuid )
# ch = svc.getCharacteristics( char_uuid )[0]
# ch.write( setup_data ) # Main loop -------- while True:
if p.waitForNotifications(1.0):
# handleNotification() was called
continue print "Waiting..."
# Perhaps do something else here
蓝牙通信模块pybluez的使用
选择蓝牙通信对象
import bluetooth target_name = "My Device"
target_address = None nearby_devices = bluetooth.discover_devices() for bdaddr in nearby_devices:
if target_name == bluetooth.lookup_name( bdaddr ):
target_address = bdaddr
break if target_address is not None:
print("found target bluetooth device with address ", target_address)
else:
print("could not find target bluetooth device nearby")
查询设备服务
import bluetooth nearby_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 bluetooth server_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 ",address data = client_sock.recv(1024)
print "received [%s]" % data client_sock.close()
server_sock.close()
2. 客户端程序
import bluetooth bd_addr = "01:23:45:67:89:AB" port = 1 sock=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 bluetooth server_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 ",address data = client_sock.recv(1024)
print "received [%s]" % data client_sock.close()
server_sock.close()
2.客户端程序
import bluetooth sock=bluetooth.BluetoothSocket(bluetooth.L2CAP) bd_addr = "01:23:45:67:89:AB"
port = 0x1001 sock.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 )
refer:
An Introduction to Bluetooth Programming
python实现蓝牙通信的更多相关文章
- PC蓝牙通信C#代码实现
PC蓝牙通信C#代码实现 这篇文章主要为大家详细介绍了PC蓝牙通信C#代码实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了C#实现PC蓝牙通信代码,供大家参考,具体内容如下 ...
- Android学习笔记之蓝牙通信...
PS:最近同学问我蓝牙的事,因此自己也就脑补了一下蓝牙... 学习内容: 1.如何实现蓝牙通信技术... 蓝牙通信其实是手机里很常用的一种通信方式,现在的手机中是必然存在蓝牙的,蓝牙通信也是有一部 ...
- BLE蓝牙通信指令交互过程配对与绑定
最简单一次蓝牙通信需要以上相关步骤,包括discovery device,connect,pairing,bond等4个主要部分.BLE中主从机建立连接,到配对和绑定的过程如下图:
- Android -传统蓝牙通信聊天
概述 Android 传统蓝牙的使用,包括开关蓝牙.搜索设备.蓝牙连接.通信等. 详细 代码下载:http://www.demodashi.com/demo/10676.html 原文地址: Andr ...
- Android BLE设备蓝牙通信框架BluetoothKit
BluetoothKit是一款功能强大的Android蓝牙通信框架,支持低功耗蓝牙设备的连接通信.蓝牙广播扫描及Beacon解析. 关于该项目的详细文档请关注:https://github.com/d ...
- Android - 传统蓝牙通信聊天
Android -传统蓝牙通信聊天 技术:java+Android4.4+jdk1.8 运行环境:Android4.4.Android7.0 概述 Android 传统蓝牙的使用,包括开关蓝牙.搜索设 ...
- Android 串口蓝牙通信开发Java版本
Android串口BLE蓝牙通信Java版 0. 导语 Qt on Android 蓝牙通信开发 我们都知道,在物联网中,BLE蓝牙是通信设备的关键设备.在传统的物联网应用中,无线WIFI.蓝牙和Zi ...
- Android蓝牙通信总结
这篇文章要达到的目标: 1.介绍在Android系统上实现蓝牙通信的过程中涉及到的概念. 2.在android系统上实现蓝牙通信的步骤. 3.在代码实现上的考虑. 4.例子代码实现(手持设备和蓝牙串口 ...
- Qt on Android 蓝牙通信开发
版权声明:本文为MULTIBEANS ORG研发跟随文章,未经MLT ORG允许不得转载. 最近做项目,需要开发安卓应用,实现串口的收发,目测CH340G在安卓手机上非常麻烦,而且驱动都是Java版本 ...
随机推荐
- hadoop2.7.7+habse2.0.5+zookeeper3.4.14+hive2.3.5单机安装
环境 腾讯云centos7 1.hadoop下载 http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar ...
- 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_10-webpack研究-安装nodejs
1.3.2.1 安装Node.js webpack基于node.js运行,首先需要安装node.js. node -v:验证是否安装成功了.
- OpenStack Manila发展动态系列--Austin峰会
1 Manila Mitaka版本概述 在Austin峰会上介绍到,Manila Mitaka发布版本Driver个数达到了18个, M版本新加入14家公司(中国公司继华为之后又有99cloud等公司 ...
- django的邮件email功能
注意 测试的时候python manage.py test -p "test_tasks.py" -v 3,默认使用的EMAIL_BACKEND配置为:'django.core.m ...
- 撸一个vue的双向绑定
1.前言 说起双向绑定可能大家都会说:Vue内部通过Object.defineProperty方法属性拦截的方式,把data对象里每个数据的读写转化成getter/setter,当数据变化时通知视图更 ...
- sql注入02
第一关:基于错误的get单引号字符型注入 第二关:基于错误的get整形注入 第三关:基于错误的get单引号变形字符型注入 第四关:基础错误的双引号字符型注入 第五关: 第六关 第七关:导出文件get字 ...
- Webpack实现按需打包Lodash的几种方法详解
参考链接:https://www.jb51.net/article/113235.htm 在vue-cli3中需要将babel-preset-es2015插件更换为@babel/preset-env插 ...
- POJ 3274/洛谷 1360:Gold Balanced Lineup 黄金阵容平衡
题目描述 Farmer John's N cows (1 ≤ N ≤ 100,000) share many similarities. In fact, FJ has been able to na ...
- 环境变量配置文件profile
环境变量配置文件 在Ubuntu中有如下几个文件可以设置环境变量1./etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时, ...
- Mybatis插件之Mybatis-Plus(SpringBoot)
这边只在SpringBoot下进行简单查询的测试,接下来会博客会介绍增删改的操作. 数据库表结构如下: 开始测试: 1.新建工程(trymp_springboot)并把项目结构建立好 2.导入pom. ...