【问题标题】:BLE Server side implementations using C++ in a Linux environment在 Linux 环境中使用 C++ 实现 BLE 服务器端
【发布时间】:2019-07-04 15:05:54
【问题描述】:

是否有任何在 Linux 环境中用 C++ 实现的 BLE 服务器示例? 就上下文而言,我有一个运行 UbuntuNVIDIA Jetson TX2 板,并且我想在其中有一个 BLE 服务器,我可以配对 Android 和 iOS 设备。该设备将广播移动应用程序可以订阅的特征,并且它们还可以发送/接收消息,最好是 JSON 格式。它目前有一些蓝牙代码,但我认为这只适用于经典模式:

...
int s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);

loc_addr.rc_family = AF_BLUETOOTH;
loc_addr.rc_bdaddr = *BDADDR_ANY_INITIALIZER;
loc_addr.rc_channel = (uint8_t) 22;

int b = bind(s, (struct sockaddr *)&loc_addr, sizeof(loc_addr));
...

总的来说,我对 C++、Linux 和 BLE 开发还很陌生,所以我想获得正确方向的指点。

【问题讨论】:

标签: c++ linux ubuntu bluetooth-lowenergy bluez


【解决方案1】:

我的建议是你采取以下方向:-

  1. 通过命令行实现您的应用程序。
  2. 通过自动化的 shell 脚本实现您的应用程序。
  3. (可选)使用 C/C++ 实现您的应用程序。

如果不需要用 C/C++ 编写应用程序,那么我建议跳过这一步,因为您可以使用 shell 脚本获得相同的结果。

至于通过命令行实现应用程序,我推荐使用 bluetoothctl 工具,如以下答案所示:-

一旦这开始为您工作,您就可以从远程设备连接并浏览 GATT 表,将命令列表转换为 shell 脚本并触发它以查看相同的结果。

最后,如果到目前为止这对您有用,那么下一步就是将该 shell 脚本转换为 C/C++ 应用程序。您可以通过浏览之前使用的 bluetoothctl 命令的源代码来做到这一点。您可以找到BlueZ 堆栈的源代码here,bluetoothctl 命令的代码可以找到here

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    相关资源
    最近更新 更多