这篇文章主要介绍了基于python实现蓝牙通信代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
安装和示例
linux下安装
sudo apt-get install python-pip libglib2.0-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 )
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
标签:
python,蓝牙,通信
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“基于python实现蓝牙通信代码实例”评论...
更新日志
2025年01月08日
2025年01月08日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]