无法读取 /dev/rfcomm

Unable to read from /dev/rfcomm

我正在尝试通过蓝牙 SPP 配置文件将我的目标连接到移动设备。 蓝牙连接建立后,请求创建 rfcomm 通道进行通信。

output of 
ls -all /dev/rfcomm0
crw-rw-rw-    1 root     dialout   216,   0 Jan  1 00:02 /dev/rfcomm0

创建 rfcomm 设备后,我将在我的代码中打开文件并向其写入数据。

fd = open('/dev/rfcomm0', O_RDWR | O_NOCTTY | O_SYNC);
write(write(fd, &sendBuffer[0], sendBuffer.size())

写入成功。 如果我再次尝试通过 rfcomm 读取数据,代码将不会继续。

read(fd, recvbuf, recvbuflen)

由于读取无效,我尝试关闭文件描述符并再次打开它。

这次打不开了/dev/rfcomm0。它returns-1.

不足之处请指点

我也是新手,所以如果有任何关于使用 C++ 的蓝牙 SPP 的文档。

找到解决方案,我尝试连接的移动应用程序使用不同的 UUID 进行通信。如果我使用应用程序定义的 UUID 启动连接,我就能够正确地读写数据。

但我还有一个疑问,蓝牙规范为其配置文件定义了 UUID。

For SPP it is 0x0003.

在我的用例中,导航设备使用 SPP 配置文件与 android 应用程序通信,但使用的 UUID 不是 0x0003。

那么这是否意味着 android 应用程序可以选择除规范中提到的任何随机唯一 UUID 通过 SPP 进行通信?