BLE在Linux环境中使用C++的服务器端实现



是否有在Linux环境中用C++实现的BLE服务器的示例?就上下文而言,我有一个运行Ubuntu的NVIDIA 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的开发还很陌生,所以我想找到正确的方向。

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

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

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

至于通过命令行实现应用程序,我建议使用bluetoothctl工具,如下所示:-

  • BlueZ:如何从命令行设置GATT服务器

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

最后,如果到目前为止这对您有效,那么下一步就是将shell脚本转换为C/C++应用程序。您可以通过浏览前面使用的bluetoothctl命令的源代码来完成此操作。您可以在此处找到BlueZ堆栈的源代码,bluetoothctl命令的代码也可以在此处查找。

我希望这能有所帮助。

最新更新