我想问您是否可以通过广播模式将数据(字符串)从BLE设备(例如Raspberry Pi,Onion或带有蓝牙加密狗的Arduino)发送到另一设备(例如电话或另一设备) Raspberry Pi),它将在屏幕上显示数据。
说实话,没有必要在屏幕上显示数据,但是另一台设备必须能够使用我将创建的C程序来详细说明接收到的数据。
我对此主题进行了大量研究,但是我只能找到有关信标的答案,这些对象无法为我的项目发送有用的数据(例如字符串),或者必须相互连接才能发送/接收的BLE设备数据。
我想用C创建一个程序,以实现此结果。 我在BlueZ库中搜索了一些有用的东西,但找不到任何东西,因为它们没有解释其功能的含义。 如果有可能,我不想创建一个android / iOS应用程序。
答案 0 :(得分:2)
是的,这是可能的。您可能已经知道,蓝牙低功耗(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 version 5.50,建议您也这样做。
一旦您可以公布数据并正确地从另一端读取数据,就可以遍历源代码,并查看可以对C应用程序使用的内容。对于bluetoothctl函数,您要从以下两个文件开始:-
我希望这会有所帮助。
(*)从Bluetooth 5开始,您可以添加更多数据来发布报告,但是,这是一项非常新的功能,截至撰写本文时,很少有堆栈支持该功能。