我有第三方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,因为它是一个阻塞调用。
请建议。