欢迎访问宙启技术站
智能推送

bluepy.btle库:在Python中控制蓝牙设备的完美解决方案

发布时间:2023-12-27 14:19:11

bluepy.btle是一个Python库,用于与蓝牙设备进行通信和控制。它提供了一个简单而强大的接口,可用于连接到蓝牙设备、读取和写入特性、检测服务、发送命令以及接收来自设备的通知。

下面是一个使用bluepy.btle库控制蓝牙设备的例子:

from bluepy import btle

# 蓝牙设备的MAC地址
DEVICE_ADDRESS = '00:00:00:00:00:00'

# 连接到蓝牙设备
device = btle.Peripheral(DEVICE_ADDRESS)

# 获取所有服务
services = device.getServices()

# 打印所有服务和特性
for service in services:
    print(f"Service UUID: {service.uuid}")

    for characteristic in service.getCharacteristics():
        print(f"    Characteristic UUID: {characteristic.uuid}")

# 读取一个特性的值
characteristic_uuid = '00002a00-0000-1000-8000-00805f9b34fb'  # 例子UUID
characteristic = device.getCharacteristics(uuid=characteristic_uuid)[0]
value = characteristic.read()
print(f"Value: {value}")

# 写入一个特性的值
characteristic_uuid = '00002a01-0000-1000-8000-00805f9b34fb'  # 例子UUID
characteristic = device.getCharacteristics(uuid=characteristic_uuid)[0]
value = b"\x01\x00"  # 例子值
characteristic.write(value)

# 订阅一个特性的通知
characteristic_uuid = '00002a05-0000-1000-8000-00805f9b34fb'  # 例子UUID
characteristic = device.getCharacteristics(uuid=characteristic_uuid)[0]

def handle_notification(handle, value):
    print(f"Received notification: {value}")

device.setDelegate(btle.DefaultDelegate())
device.writeCharacteristic(characteristic.getHandle() + 1, b"\x01\x00")
device.waitForNotifications(10)

# 断开与蓝牙设备的连接
device.disconnect()

在上面的例子中,我们首先创建了一个Peripheral对象,用于与指定MAC地址的蓝牙设备进行连接。然后,我们使用getServices方法获取所有服务,并遍历打印每个服务的UUID以及其包含的特性的UUID。接下来我们读取一个特性的值和写入一个特性的值的示例。另外,我们还订阅了一个特性的通知,并定义了一个处理通知的回调函数,用于接收来自设备的通知。最后,我们断开与蓝牙设备的连接。

使用bluepy.btle库,我们可以轻松地控制蓝牙设备,并与其进行通信。无论是读取特性的值、写入特性的值,还是订阅特性的通知,bluepy.btle库可以满足我们的需求。无论是开发蓝牙外设还是与蓝牙设备进行通信,bluepy.btle是一个强大而方便的解决方案。