问题描述
我的目标是设置我的RaspBerry Pi 4,使其能够在我使用React Native制作的应用程序中单击按钮时运行脚本。我需要能够做到这一点,以便他们能够在没有wifi的情况下进行连接,这就是为什么我决定使用蓝牙的原因。
到目前为止,我已经在Pi上安装了RFCOMM服务器,并安装了react-native-ble-plx模块以能够处理蓝牙通信,但是我不确定如何使React Native连接到该服务器。
如果有人能告诉我如何连接它们并将数据发送到Pi以使其运行终端命令并返回结果,我将非常感激。
解决方法
有两种相互不兼容的蓝牙。 RFCOMM和BLE不能一起工作。
在Raspberry Pi上,您需要创建一个GATT服务器。 RPi使用BlueZ堆栈,并且在其源代码树中有一个示例: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/test/example-gatt-server
您还需要准备一个广告,以便您的手机可以找到gatt服务器。还有一个示例:https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/test/example-advertisement
另一个建议是不要尝试同时开发蓝牙链接的两端,因为这很棘手。在开发React应用之前,请使用generic BLE tool检查服务器是否正常工作。