繁体   English   中英

是否可以使用BLE广播模式发送数据?

[英]Is it possible to send data with BLE broadcast mode?

我想问你是否有可能以广播模式从BLE设备(如带有蓝牙加密狗的Raspberry Pi,Onion或Arduino)向另一台设备(如电话或其他Raspberry Pi)发送数据(字符串) ,这将在屏幕上显示数据。

说实话,没有必要在屏幕上显示数据,但是其他设备必须能够使用我将创建的C程序详细说明接收到的数据。

我对这个主题进行了大量的研究,但我只能找到有关Beacons的答案,这些对象无法为我的项目(如字符串)发送有用的数据,或者必须相互连接以发送/接收数据的BLE设备。

我想在C中创建一个程序,以实现这个结果。 我在BlueZ库中搜索了一些有用的东西,但我找不到任何东西,因为它们没有解释它们的功能的含义。 如果有可能我不想创建一个Android / iOS应用程序。

是的,这是可能的。 您可能已经知道,蓝牙低功耗(BLE)有四个角色: -

  • 广播公司 - 仅宣传数据的设备。
  • 外围设备 - 一种广告数据但也可以通过远程设备连接的设备。
  • Observer - 只扫描数据的设备。
  • 中央 - 可以扫描数据并连接到它们的设备。

当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 /客户端/ main.c中
  • 的bluez-5.50 /客户端/ advertising.c

我希望这有帮助。

(*)从蓝牙5开始,您可以向广告报告添加更多数据,但这是一个非常新的功能,在撰写本文时,很少有堆栈支持它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM