我创建了一个套接字来从蓝牙中的 rfcomm 套接字接收数据。
一件包裹收到的包裹有 10 个号码,但有时我会收到单独的部分。这取决于我选择获取数据的频率。例如,如果我选择1000Hz
我会得到所有信息。我正在使用 a QTimer
,因为它得到一个 int ,因为间隔 1000 ms / 1000 Hz 等于一个 int,这没关系。但是,如果除法不是 int,那么 QTimer
它将对其进行舍入,并且它不会及时重新启动函数以获取所有包,因为它不同步。
我用这个,
sock = socket (AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
numb = read (sock, buf, 10);
如果 numb 等于 10,则包没问题,所以我处理它。如果没有,则只收到一部分。然后那部分就丢失了。
有没有办法只检查缓冲区是否已满而不是已经读取它?即如果状态已满,则读取它,如果没有,则将其留给下一次迭代。
我不是这方面的专家,但国旗会MSG_EOR
帮助我吗?我的数据是打包的。
我应该read
改成recv
? recv
获取一个套接字作为参数。
任何帮助将不胜感激。