python找不到idleble_如何在python中使用pygatt从BLE设备获取通知?

我正在使用

python开发一个

Linux应用程序,它将连接到我的BLE设备并通过通知特性来获取数据.我正在使用

pygatt进行BLE通信.我可以成功连接并绑定到设备并读取/写入特性.即使我可以订阅通知特性,但问题是,我的BLE设备是一个自定义机器,里面有4个计数器,每当计数器的一个数据发生变化时,它就会设置相应的通知标志,因此,使用onDataChanged-像方法我可以从阅读特征中读取计数器的数据.在使用pygatt的Python中,我可以订阅通知特性:

class_name.device.subscribe(uuid.UUID(notify_characteristic),callback=notifyBle)

而notifyBle是:

def notifyBle(self,handle,data):

read_data = class_name.device.char_read(uuid.UUID(read_characteristic))

print(read_data)

当我运行程序时,首先我扫描设备并连接到我的设备并与之绑定,然后我发现特征并列出它们.一切都很成功.列出特性后,我写了写特性来清除通知标志,也是成功的.最后我订阅通知特征它是成功的.

完成所有这些过程后,我会在物理上增加设备的计数器(设备上有按钮用于增加计数器).当我按下按钮程序进入notifyBle方法,它给出错误,这是:

Exception in thread Thread-3:

Traceback (most recent call last):

File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner

self.run()

File "/usr/local/lib/python3.5/dist-packages/pygatt/backends/gatttool/gatttool.py", line 137, in run

event["callback"](event)

File "/usr/local/lib/python3.5/dist-packages/pygatt/backends/gatttool/gatttool.py", line 479, in _handle_notification_string

self._connected_device.receive_notification(handle, values)

File "/usr/local/lib/python3.5/dist-packages/pygatt/device.py", line 226, in receive_notification

callback(handle, value)

File "/home/acd/Masaüstü/python_workspace/ble.py", line 54, in notifyBle

read_data = bleFunctions.dev.char_read(uuid.UUID(bleFunctions.read_characteristic))

File "/usr/local/lib/python3.5/dist-packages/pygatt/backends/gatttool/device.py", line 17, in wrapper

return func(self, *args, **kwargs)

File "/usr/local/lib/python3.5/dist-packages/pygatt/backends/gatttool/device.py", line 40, in char_read

return self._backend.char_read(self, uuid, *args, **kwargs)

File "/usr/local/lib/python3.5/dist-packages/pygatt/backends/gatttool/gatttool.py", line 53, in wrapper

return func(self, *args, **kwargs)

File "/usr/local/lib/python3.5/dist-packages/pygatt/backends/gatttool/gatttool.py", line 519, in char_read

self.sendline('char-read-uuid %s' % uuid)

File "/usr/lib/python3.5/contextlib.py", line 66, in __exit__

next(self.gen)

File "/usr/local/lib/python3.5/dist-packages/pygatt/backends/gatttool/gatttool.py", line 180, in event

self.wait(event, timeout)

File "/usr/local/lib/python3.5/dist-packages/pygatt/backends/gatttool/gatttool.py", line 154, in wait

raise NotificationTimeout()

pygatt.exceptions.NotificationTimeout

任何帮助,将不胜感激.

PS:我在Android和Windows UWP中编写了完全相同的程序.使用python,我的目标是在raspberry pi 3上运行它.

PSS:我正在使用带有Ubuntu Mate的raspberry pi 3来在python中开发这个程序.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值