基于python实现蓝牙通信代码实例
这篇文章主要介绍了基于python实现蓝牙通信代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
安装和示例
linux下安装
sudoapt-getinstallpython-piplibglib2.0-dev sudopipinstallbluepy
官方示例
importbtle classMyDelegate(btle.DefaultDelegate): def__init__(self,params): btle.DefaultDelegate.__init__(self)#.. .initialisehere defhandleNotification(self,cHandle, data):#...perhapscheckcHandle#...process'data' # Initialisation------- p=btle.Peripheral(address) p.setDelegate(MyDelegate(params)) #Setuptoturnnotificationson,e.g.#svc= p.getServiceByUUID(service_uuid)#ch= svc.getCharacteristics(char_uuid)[0]#ch .write(setup_data) #Mainloop-------- whileTrue: ifp.waitForNotifications(1.0):# handleNotification()wascalled continue print"Waiting..."# Perhapsdosomething elsehere
蓝牙通信模块pybluez的使用
选择蓝牙通信对象
importbluetooth target_name="MyDevice" target_address=None nearby_devices=bluetooth.discover_devices() forbdaddrinnearby_devices: iftarget_name==bluetooth.lookup_name( bdaddr): target_address=bdaddr break iftarget_addressisnotNone: print( "foundtargetbluetoothdevicewithaddress", target_address) else: print( "couldnotfindtargetbluetoothdevicenearby" )
查询设备服务
importbluetooth
nearby_devices=bluetooth.discover_devices(
lookup_names=True)
foraddr,nameinnearby_devices:
print("%s-%s"%(addr,name))
services=bluetooth.find_service(
address=addr)
forsvcinservices:
print("ServiceName:%s"%svc["name"])
print("Host:%s"%svc["host"])
print("Description:%s"%svc[
"description"])
print("ProvidedBy:%s"%svc[
"provider"])
print("Protocol:%s"%svc["protocol"])
print("channel/PSM:%s"%svc["port"])
print("svcclasses:%s"%svc[
"service-classes"])
print("profiles:%s"%svc["profiles"])
print("serviceid:%s"%svc[
"service-id"])
print("")
通过RFCOMM方式进行通信
采用类似于socket编程模型的方式进行蓝牙通信的编程
1.服务器端程序
importbluetooth
server_sock=bluetooth.BluetoothSocket(
bluetooth.RFCOMM)
port=1
server_sock.bind(("",port))
server_sock.listen(1)
client_sock,address=server_sock.accept()
print"Acceptedconnectionfrom",
address
data=client_sock.recv(1024)
print"received[%s]"%data
client_sock.close()
server_sock.close()
2.客户端程序
importbluetooth
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.服务器端程序
importbluetooth
server_sock=bluetooth.BluetoothSocket(
bluetooth.L2CAP)
port=0x1001
server_sock.bind(("",port))
server_sock.listen(1)
client_sock,address=server_sock.accept()
print"Acceptedconnectionfrom",
address
data=client_sock.recv(1024)
print"received[%s]"%data
client_sock.close()
server_sock.close()
2.客户端程序
importbluetooth
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) #connectthesocket bluetooth.set_l2cap_mtu(l2cap_sock,65535)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。