gpt4 book ai didi

c++ - 检查蓝牙套接字中缓冲区的状态

转载 作者:太空宇宙 更新时间:2023-11-04 11:25:28 24 4
gpt4 key购买 nike

我创建了一个套接字来从蓝牙中的 rfcomm 套接字接收数据。

一件收到的包裹有 10 个号码,但有时我会收到分开的部分。这取决于我选择获取数据的频率。例如,如果我选择 1000Hz,我将获得所有信息。我正在使用 QTimer,因为它得到一个整数,因为间隔 1000 毫秒/1000 赫兹等于一个整数,这没问题。但是,如果除法不是 int,那么 QTimer 将对其进行舍入,并且它不会及时重新启动函数以在它去同步时获取所有包。

我用这个,

sock = socket (AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);

numb = read (sock, buf, 10);

如果 numb 等于 10,则包没问题,所以我处理它。如果没有,则只收到一部分。然后那部分就丢失了。

有没有办法只检查缓冲区是否已满而不是已经读取它? IE。如果状态为if full,则读取它,如果没有,则将其留给下一次迭代。

我不是这方面的专家,但是 MSG_EOR 标志对我有帮助吗?我的数据是打包的。

我应该将 read 更改为 recv 吗? recv 获取一个套接字作为参数。

如有任何帮助,我们将不胜感激。

最佳答案

Is there a way to only check if the buffer is full instead of reading it already?

您可以尝试使用带有标志 MSG_PEEK 的recv。使用此标志 recv 以相同的方式工作,但它不会从队列中删除输入数据。

关于c++ - 检查蓝牙套接字中缓冲区的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15064901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com