小编给大家分享一下基于python如何实现蓝牙通信,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

基于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如何实现蓝牙通信”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!