admin管理员组文章数量:1642184
目录
- 前言
- 安装bleson
- 运行官方例程
- basic_observer.py
- basic_advertiser.py
- Internal API
前言
系统:Windows10 企业版
IDE:pycharm2020
python版本:3.8.12
环境创建: Anaconda3
电脑:台式机 外接蓝牙
bleson github地址:https://github/TheCellule/python-bleson
本来想试试pybluez(py3.8)的,但是安装报错Windows SDK相关的错误,懒得搞了(后来试了py3.6,轻松安装),所以搜集下信息,找到了bleson,不过bleson用的人很少,就试试水,顺便记录使用过程。bluepy只支持Linux,有点伤
安装bleson
官方文档:https://bleson.readthedocs.io/en/latest/installing.html
进入你conda配好的环境 我这是 activate py38
(我已经事先用Anaconda创建了py38的环境)
控制台输入命令 pip install bleson
第一遍安装卡着了。。。第二遍问题依旧
重启pycharm,重新安装,比较慢 不过成功安装。
运行官方例程
运行例程记得打开蓝牙
如果没有打开,会出现报错,如 RuntimeError: Start watcher failed : 000001D6A093A13C
basic_observer.py
扫描周围蓝牙设备,并打印相应蓝牙信息
#!/usr/bin/env python3
import sys
from time import sleep
from bleson import get_provider, Observer
# Get the wait time from the first script argument or default it to 10 seconds
WAIT_TIME = int(sys.argv[1]) if len(sys.argv) > 1 else 10
def on_advertisement(advertisement):
print(advertisement)
adapter = get_provider().get_adapter()
observer = Observer(adapter)
observer.on_advertising_data = on_advertisement
observer.start()
sleep(WAIT_TIME)
observer.stop()
运行效果如下,扫到很多没有name的,不过庆幸的是扫到了我的小米手环,还算正常(ps:默认是扫描10s,如需修改可传参20s 例 python basic_observer.py 20
)
我们简单修改下代码,过滤下空name的打印
#!/usr/bin/env python3
import sys
from time import sleep
from bleson import get_provider, Observer
# Get the wait time from the first script argument or default it to 10 seconds
WAIT_TIME = int(sys.argv[1]) if len(sys.argv) > 1 else 10
def on_advertisement(advertisement):
# <class 'bleson.core.types.Advertisement'>
# print(type(advertisement))
if len(advertisement.name) > 0:
print(advertisement)
adapter = get_provider().get_adapter()
observer = Observer(adapter)
observer.on_advertising_data = on_advertisement
observer.start()
sleep(WAIT_TIME)
observer.stop()
又多扫描到了一个设备
不过我手机就在旁边却扫不到(打开“设置”,蓝牙打开,发现手机以前配过对,删除配对后,使用 系统的扫描)
再次回到程序,进行扫描,恩,还是扫不到,大无语事件。。。
打印蓝牙设备mac地址,追加 print(advertisement.address)
,参考文档:https://bleson.readthedocs.io/en/latest/api_datatypes.html#device
basic_advertiser.py
#!/usr/bin/env python3
import sys
from logging import DEBUG
from time import sleep
from bleson import get_provider, Advertiser, Advertisement
# Get the wait time from the first script argument or default it to 10 seconds
WAIT_TIME = int(sys.argv[1]) if len(sys.argv) > 1 else 10
print('WAIT_TIME =', WAIT_TIME)
print('get_provider().get_adapter()...')
adapter = get_provider().get_adapter()
advertiser = Advertiser(adapter)
advertisement = Advertisement()
advertisement.name = "bleson"
advertiser.advertisement = advertisement
print('advertiser.start()...')
advertiser.start()
sleep(WAIT_TIME)
print('advertiser.stop()...')
advertiser.stop()
就挺莫名其妙,而且程序无法正常结束。。。大无语事件
修改下源码,以日志形式打印
#!/usr/bin/env python3
import sys
from logging import DEBUG
from time import sleep
from bleson import get_provider, Advertiser, Advertisement
from bleson.logger import log
# 设置日志等级
log.setLevel(DEBUG)
# Get the wait time from the first script argument or default it to 10 seconds
WAIT_TIME = int(sys.argv[1]) if len(sys.argv) > 1 else 10
log.debug("WAIT_TIME={}".format(WAIT_TIME))
log.debug('get_provider().get_adapter()...')
adapter = get_provider().get_adapter()
advertiser = Advertiser(adapter)
advertisement = Advertisement()
advertisement.name = "bleson"
advertiser.advertisement = advertisement
log.debug('advertiser.start()...')
advertiser.start()
sleep(WAIT_TIME)
log.debug('advertiser.stop()...')
advertiser.stop()
log.debug('run over...')
看源码和日志应该是开始广播一段时间,然后停止,不过实际用下来 无事发生,换个程序算了。
Internal API
官方文档:https://bleson.readthedocs.io/en/latest/api_internal.html
其实可以发现,这个库实现的功能并不多呀,就广播、扫描,搞个beacon玩玩,没有蓝牙连接 读写的相关功能,这。。。我白给了
版权声明:本文标题:Windows下 python bleson 安装使用记录 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1729328022a1196014.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论