简短问题:在一般情况下[协议是否允许]和使用BlueZ堆栈的情况下,是否可以定期连接到某些LE设备并读取特征?
长问题:我正在编写一个Python脚本来扫描广告某个UUID的LE设备。如果找到一个,我们应该连接,读取特定的特征值(称之为ValueA
),然后断开连接。想法是维护实时列表中存在哪些ValueA
。我希望能够生成一个线程,开始LE扫描并将广告事件收集到线程安全容器中。当发现新设备时,应该触发处理程序以读取ValueA
。
我使用PyBluez和BluePy(连接到外设)的努力失败了。当我使用终端命令(sudo hcitool lescan --duplicates
和sudo gatttool -I
,然后连接和读取命令)时,如果我尝试在开始扫描后连接,则会失败(扫描中止)
gatttool
连接到设备,我可以启动扫描并继续读取ValueA
而不影响扫描,但反之则不行。如有任何见解或良好的BlueZ编程文档,将不胜感激。在Ubuntu 14.10 Macbook Pro上使用BlueZ 4.1。