我想请问您是否可以以广播模式从 BLE 设备(例如带有蓝牙适配器的 Raspberry Pi、Onion 或 Arduino)向另一个设备(例如手机或另一个 Raspberry Pi)发送数据(字符串) ,这将在屏幕上显示数据。
老实说,没有必要在屏幕上显示数据,但其他设备必须能够使用我将创建的 C 程序详细说明接收到的数据。
我对此主题进行了大量研究,但只能找到有关信标的答案,这些对象无法为我的项目发送有用的数据(如字符串),或者必须相互连接才能发送/接收数据的 BLE 设备。
我想用C语言创建一个程序,以达到这个结果。
我在 BlueZ 库中搜索了一些有用的东西,但我找不到任何东西,因为它们没有解释其函数的含义。
如果可能的话我不想创建一个 android/iOS 应用程序。
是的,这是可能的。您可能已经知道,低功耗蓝牙 (BLE) 有四个角色:-
- 广播器 - 仅广播数据的设备。
- 外围设备 - 通告数据但也可以通过远程设备连接的设备。
- 观察者 - 仅扫描数据的设备。
- 中央 - 可以扫描数据并连接到数据的设备。
当 BLE 首次推出时,信标/传感器(例如心率、温度计)占据前两类,手机/计算机占据另外两类。然而,BLE 自此不断发展,现在许多设备都支持所有四种角色,并且设备可以同时以一种或多种角色运行。
关于你的问题,正如 Lee Daniel Crocker 提到的,数据就是数据,你在广告中放入的内容只是另一端必须理解的字节。您只能在广告报告中放入 31 字节的数据*,这就是面向连接的数据传输效率更高的原因。
关于可编程性,我建议从用于通告的设备和用于读取数据的设备上使用 BlueZ 命令。您可以使用 Bluetoothctl 命令执行此操作,如下所示:-
在广播公司/外围设备上
#bluetoothctl
[bluetooth]menu advertise
[bluetooth]advertise data 00 00 00 00
[bluetooth]back
[bluetooth]advertise on
关于观察者/中央
#bluetoothctl
[bluetooth]scan on
我在用BlueZ 版本 5.50我建议你也这样做。
一旦您可以公布数据并从另一端正确读取数据,您就可以浏览源代码并查看可以在 C 应用程序中利用哪些内容。对于 bluetoothctl 函数,您需要从以下两个文件开始:-
- bluez-5.50/client/main.c
- bluez-5.50/client/advertising.c
我希望这有帮助。
(*) 从蓝牙 5 开始,您可以向广告报告添加更多数据,但这是一个非常新的功能,截至撰写本文时,很少有堆栈支持它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)