0

我有一个通过蓝牙 SPP 配置文件连接到 Android 智能手机的蓝牙设备。

连接成功后,设备会打开 rfcomm 设备

handle = open("/dev/rfcomm0", O_RDWR | O_NOCTTY | O_SYNC);

成功连接后,智能手机向设备发送数据。它向设备发送 3 个连续的几个字节的消息。这在查看蓝牙设备的监听日志后得到验证。

然而,蓝牙设备端的阻塞读取永远无法读取最初的 2 条消息,之后它会读取所有其他消息。

通过编写一个独立脚本来尝试相同的实验,该脚本在 SPP 连接成功后立即开始读取 rfcomm 设备上的数据,但这里的结果也是相同的。

请指导可能出现的问题。

4

1 回答 1

0

或多或少是时间问题。

设备上的应用程序请求蓝牙堆栈以创建与 Android 手机的 SPP 连接。在成功的 SPP 连接 /dev/rfcomm0 设备由蓝牙堆栈创建。

一旦创建了 rfcomm 通道,Android 手机就会向设备发送数据,但此时设备上的应用程序并未随着 rfcomm 设备的创建而更新。由于 rfcomm 没有阅读器,蓝牙堆栈会刷新从 Android 手机接收到的所有数据。

多次执行此实验,一旦成功。

于 2017-05-09T06:37:52.730 回答