ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

【2019-09-22】linux下使用蓝牙协议栈的一点记录

【2019-09-22】linux下使用蓝牙协议栈的一点记录 [历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2019-09-22 标题linux下使用蓝牙协议栈的一点记录分类操作系统 / linux / 网络通讯 / Bluetooth 标签linux·ubuntu·bluetooth·blueZ·hciconfiglinux下使用蓝牙协议栈的一点记录blueZ安装hciconfig封装命令方式hci命令接口方式hci代码API方式bluepypybluez安装BLE支持最近想在ubuntu和树莓派4上跑一些蓝牙应用遇到了很多坑这里简单的记录下。blueZ安装blueZ是linux的蓝牙官方协议栈加上一堆蓝牙工具安装命令如下$sudoapt-getinstallbluetooth bluez-utils bluez-compat blueman bluez-hcidump在网上搜索一些蓝牙协议栈的讲解可以发现蓝牙协议是分为硬件和软件两层的历史演进又分为经典蓝牙和低功耗蓝牙我们可以通过软件接口的方式来对蓝牙进行设置考虑到软件接口层层封装使用不同的软件接口层次决定了可以设置蓝牙的粒度。hciconfig封装命令方式以设置蓝牙广播为例命令如下$ hciconfig hci0 name hello_ble $ hciconfig hci0 reset $ hciconfig hci0 leadv#打开广播$ hciconfig hci0 noleadv#关闭广播hci命令接口方式这里参考一片博文【 https://cloud.tencent.com/developer/article/1023913 】核心思路为使用hcitool的cmd命令来实现$sudohcitool-ihci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 0215f6bc15e0939046679b e1866e c8 a199dc00 00 00 00 C8 00hci代码API方式我们可以安装 【 libbluetooth-dev 】来得到蓝牙的开发环境然后通过C语言编码的方式来控制蓝牙考虑到业务复杂度这里作者没有深入研究就笔记2个python库来代替吧深入分析这两个python组件可以发现这两个python组件底层也是使用C语言直接和blueZ进行通讯的。bluepybluepy是一个目前看起来还在维护的python组件主要功能在BLE侧同时内部自带了一个blueZ-5.47版本。不过可惜的是bluepy的官方DEMO比较少。官方网址【 https://github.com/IanHarvey/bluepy 】线上文档【 http://ianharvey.github.io/bluepy-doc/ 】第三方demo【 https://github.com/rlangoy/bluepy_examples_nRF51822_mbed 】参考涛哥文档【 https://www.cnblogs.com/zjutlitao/p/10171913.html 】pybluezpybluez是一个比较旧的python组件了主要功能在经典蓝牙侧同时也可选支持BLE但是需要安装一大堆第三方组件。官方网址【 https://github.com/pybluez/pybluez 】如何安装【 https://pybluez.readthedocs.io/en/latest/install.html 】安装BLE支持安装依赖$sudoapt-getinstallpkg-config libboost-python-dev libboost-thread-dev libbluetooth-dev libglib2.0-dev python-dev安装python组件gattlibgattlib自动安装有问题需要手动安装 $ pip3 download gattlib $tar-xfgattlib-0.20150805.tar.gz 修正如下内容参考【 https://bitbucket.org/OscarAcena/pygattlib/pull-requests/22/python-3-minor-version-adaptation-for/diff#comment-None】 setup.py glib_libsifsys.version_info.major3: - boost_libs[boost_python-py34] boost_libs[boost_python-py3str(sys.version_info.minor)]else: $ pip3install.安装pybluez\$sudopip3installpybluez\
返回列表