如何让pybluez每隔X秒返回发现的设备列表,然后重复一次?

dav*_*ave 3 python bluetooth

我一直在尝试找出如何使用pybluez监视附近的设备...

我希望能够运行我的程序,并让它每20秒搜索一次设备。问题是,如何使pybluez很好地放置?:/

使用他们的示例代码http://code.google.com/p/pybluez/source/browse/trunk/examples/simple/inquiry.py,很容易找到设备。运行该代码,它将吐出MAC地址以及设备名称(如果选择的话)。

如何将其循环?我一直在玩以下代码,但是>。<

import bluetooth

def search():
   while True:
      devices = bluetooth.discover_devices(lookup_names = True)

      yield devices

for addr, name in search():
   print "{0} - {1}".format(addr, name)
Run Code Online (Sandbox Code Playgroud)

Rad*_*adu 5

这段代码对我有用:

'''
Created on Nov 16, 2011    
@author: Radu
'''
import time
import bluetooth

def search():         
    devices = bluetooth.discover_devices(duration=20, lookup_names = True)
    return devices

if __name__=="__main__":
    while True:        
        results = search()
        if (results!=None):
            for addr, name in results:
                print "{0} - {1}".format(addr, name)
            #endfor
        #endif
        time.sleep(60)
    #endwhile
Run Code Online (Sandbox Code Playgroud)

它搜索设备的时间为20秒,然后睡眠1分钟,所有这些都处于无限循环中。我在Windows上工作,在Serioux BT Dongle上使用默认Windows驱动程序。

希望能帮助到你。


ken*_*ytm 0

我不知道 pybluez,但bluetooth.discover_devices(lookup_names = True)它本身已经返回一个可迭代的,所以你应该循环它来产生。

def search():
   while True:
      devices = bluetooth.discover_devices(lookup_names = True)
      for x in devices: # <--
         yield x        # <-- 
Run Code Online (Sandbox Code Playgroud)

  • 哈哈,这简直令人难以置信。我到达这里时想:“太棒了,这和我有同样的问题!” 这是两年前的我:'( (3认同)