无法从/ dev / rfcomm读取

时间:2016-03-02 15:18:28

标签: c++ bluetooth read-write rfcomm spp

我正在尝试通过蓝牙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。它返回-1。

请指导我缺少的地方。

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

1 个答案:

答案 0 :(得分:0)

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

但我仍有一个查询,蓝牙规范为其配置文件定义了UUID。

For SPP it is 0x0003.

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

这是否意味着Android应用程序可以选择任何随机唯一的UUID,而不是规格中提到的通过SPP进行通信?