栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

检测蓝牙遥控器上的按钮(通过GATT的HID)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

检测蓝牙遥控器上的按钮(通过GATT的HID)

感谢@ukBaz,我现在可以在我的Raspberry Pi
Zero上访问蓝牙LE遥控器,他指出了如何通过GATT(Linux中的短 HoG) 访问HID :

使用配对
bluetoothctl

这只能发生一次。

首先,我同时按住1和3清除遥控器上的任何当前配对。这是我的远程型号专用的,但是很高兴知道在连接设备之前可能需要重置设备。

sudo bluetoothctlpower onagent on# you might need to do `scan on` / `scan off` until you see the remotepair AA:BB:CC:DD:EE:FF# click ok on the remote or otherwise confirm the pairingtrust AA:BB:CC:DD:EE:FFconnect AA:BB:CC:DD:EE:FF # Pairing might perform a connect, but it does not hurtinfo # info shows you if you're connected and or paired with the remote

现在重启RaspberryPi

自动连接

bluetoothctl
提示中显示您是否已连接到设备。60秒后,连接断开。我以为这是个问题,遥控器现在不会向PI发送命令,但是需要注意的是,一旦建立了配对,遥控器似乎会自动连接到我的Raspberry
Pi。

Linux中的HoG和
/dev/input

我首先想到,我将需要挂接到GATT协议栈并检测那些GATT消息和事件,以便检测遥控器的按钮事件。这是可能的,但是由于Raspberry
Pi上的BlueZ支持基于GATT的HID,即蓝牙低功耗鼠标,操纵杆,键盘,游戏控制器或遥控器。这意味着Pi上的内核会创建一个驻留在中的输入设备

/dev/input/
。所以一旦我被配对并连接我的BLE远程两个新项并在出现
/dev/input
/dev/input/event1
/dev/input/event0

我做了一个

cat/dev/input/event1
,当我按下遥控器上的一个键时,我看到了一些字节垃圾从终端飞过。因此,我可以验证遥控器是否正在向Pi发送事件。

使用阅读事件
evdev

更新 :evdev有一个模块,可让您快速输出所选设备的事件:

python3 -m evdev.evtest

@ukBaz指出我可以使用pip3包evdev来访问我的设备。通过运行以下python代码,我能够检测到遥控器上的按钮

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/470530.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号