0

我有一个第三方 Android 应用程序,它使用蓝牙 SPP 连接到我的目标。应用程序发送 JSON 数据,但发送的数据字节数未知,在我的目标接收到的数据也不一致(有时是块),没有行尾来检测发送的数据结束。

我的代码中运行了一个线程来通过串行端口读取数据。

int fd = open(rfcommDevice, O_RDWR | O_NOCTTY | O_SYNC);

void readData(int fd)
{
   while (1)
   {
      nbytes = read(fd, buf, buflen);
      if (nbytes < 0)
      {
         break;
      }
      else if (nbytes > 0)
      {
            showCompleteData();
      }
      else
      {
         close(fd);
         break;
      }
   }
}

现在 showCompleteData() 首先解析数据,如果发现不完整则失败。由于数据是分块接收的,所以我无法理解如何累积完整数据然后调用 showCompleteData()。

read() 也不返回 0,因为它是一个阻塞调用。

请建议。

4

0 回答 0