Enr*_*ssi 6 c broadcast bluetooth-lowenergy
我想问您是否可以以广播模式将数据(字符串)从 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
Run Code Online (Sandbox Code Playgroud)
在观察员/中央
#bluetoothctl
[bluetooth]scan on
Run Code Online (Sandbox Code Playgroud)
我使用的是BlueZ 5.50 版,我建议您也这样做。
一旦您可以公布数据并正确地从另一端读取数据,您就可以浏览源代码,看看您可以利用哪些 C 应用程序。对于 bluetoothctl 函数,您希望从以下两个文件开始:-
我希望这有帮助。
(*) 从蓝牙 5 开始,您可以向广告报告添加更多数据,但这是一项非常新的功能,在撰写本文时,很少有堆栈支持它。