在蓝牙rfcomm设备上阅读时数据丢失

时间:2017-04-30 06:50:44

标签: android c++ bluetooth blocking spp

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

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

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

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

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

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

请指导可能出现的问题。

1 个答案:

答案 0 :(得分:0)

或多或少是时间问题。

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

创建rfcomm频道后,Android手机会立即向设备发送数据,但此时设备上的应用程序未通过创建rfcomm设备进行更新。由于没有rfcomm的读者,蓝牙堆栈会刷新从Android手机收到的所有数据。

一旦有效,就多次执行此实验。