Tôi đang viết một chương trình bằng cách sử dụng bluepy để nghe một đặc tính được gửi bởi thiết bị bluetooth. Tôi cũng có thể sử dụng bất kỳ thư viện hoặc ngôn ngữ nào, ràng buộc duy nhất là chạy trên Linux chứ không phải trong môi trường di động (dường như nó chỉ được sử dụng rộng rãi trong các thiết bị di động, không ai sử dụng BLE với máy tính để bàn). Sử dụng bluepy Tôi đăng ký đại biểu và sau khi cố gắng đăng ký gọi thông báo write('\x01\x00')
như được mô tả trong bluetooth rfc. Nhưng nó không hoạt động, bất kỳ thông báo cho các đặc tính được nhận. Có thể tôi sai khi viết tin nhắn để đăng ký. Có lỗi trong đoạn mã nhỏ mà tôi đã viết không? Cảm ơn bạn rất nhiều.BLE đăng ký thông báo bằng cách sử dụng gatttool hoặc bluepy
class MyDelegate(btle.DefaultDelegate):
def __init__(self, hndl):
btle.DefaultDelegate.__init__(self)
self.hndl=hndl;
def handleNotification(self, cHandle, data):
if (cHandle==self.hndl):
val = binascii.b2a_hex(data)
val = binascii.unhexlify(val)
val = struct.unpack('f', val)[0]
print str(val) + " deg C"
p = btle.Peripheral("xx:xx:xx:xx", "random")
try:
srvs = (p.getServices());
chs=srvs[2].getCharacteristics();
ch=chs[1];
print(str(ch)+str(ch.propertiesToString()));
p.setDelegate(MyDelegate(ch.getHandle()));
# Setup to turn notifications on, e.g.
ch.write("\x01\x00");
# Main loop --------
while True:
if p.waitForNotifications(1.0):
continue
print "Waiting..."
finally:
p.disconnect();