我有一个蓝牙设备,通过蓝牙SPP配置文件连接到Android智能手机。
连接成功后,设备将打开rfcomm设备
handle = open("/dev/rfcomm0", O_RDWR | O_NOCTTY | O_SYNC);
连接成功后智能手机将数据发送到设备。 它向设备发送3个连续几个字节的消息。在查看蓝牙设备的snoop日志后验证了这一点。
然而,蓝牙设备端的阻塞读取永远无法读取前2条消息,之后它会读取所有其他消息。
尝试通过编写一个独立的脚本来尝试相同的实验,该脚本在SPP连接成功后立即开始在rfcomm设备上读取数据,但是结果也是如此。
请指导可能出现的问题。
答案 0 :(得分:0)
或多或少是时间问题。
设备上的应用请求蓝牙堆栈与Android手机建立SPP连接。成功的SPP连接/ dev / rfcomm0设备由蓝牙堆栈创建。
创建rfcomm频道后,Android手机会立即向设备发送数据,但此时设备上的应用程序未通过创建rfcomm设备进行更新。由于没有rfcomm的读者,蓝牙堆栈会刷新从Android手机收到的所有数据。
一旦有效,就多次执行此实验。