这个问题可能由于一些原因引起了BLE通知的状态未能及时更新而导致。下面是一个针对Python的BLE代码示例,说明了如何设置BLE发出通知的状态并正确地打印BLE通知:
import bluepy.btle as btle
class MyDelegate(btle.DefaultDelegate):
def __init__(self):
btle.DefaultDelegate.__init__(self)
def handleNotification(self, cHandle, data):
print("Received notification: ", data.hex())
# 连接BLE设备
peripheral = btle.Peripheral("xx:xx:xx:xx:xx:xx")
# 获取需要通知的特征
char = peripheral.getCharacteristics(uuid="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")[0]
# 设置通知状态
peripheral.setDelegate(MyDelegate())
peripheral.writeCharacteristic(char.getHandle() + 1, b'\x01\x00', withResponse=True)
# 发送通知
char.write(b'\x01', withResponse=False)
while True:
if peripheral.waitForNotifications(1.0):
# 处理通知
continue
在此示例中,MyDelegate
类被用于处理接收到的通知。在handleNotification
方法中,将接收到的通知打印出来。要使BLE通知起作用,需要首先设置通知状态。在此示例中,使用peripheral.setDelegate(MyDelegate())
设置MyDelegate
类实例作为BLE通知的委托,使其处理接收到的通知。然后,使用peripheral.writeCharacteristic()
方法,将通知状态设置为“通知”模式。最后,使用char.write()
方法向指定的特征中写入数据,以发出BLE通知。在waitForNotifications()
中等待接收通知,然后在handleNotification
方法中处理。
上一篇:BLE特征不接受整数数值
下一篇:BLE特征的通知未打印