Qt写串口通讯中,一次发送的数据是1 2 3 4 5 6 7 8 9 10 11 12等;但是使用read(buf, 3)接收有问题

readAll可以几次全部接收,但是read(buf,3)接收到一部分就停止了,比如只接收到12345,当再发送一次时,却把剩下的全部接收了6789101112。这是怎么... readAll可以几次全部接收,但是read(buf, 3)接收到一部分就停止了,比如只接收到1 2 3 4 5 ,当再发送一次时,却把剩下的全部接收了6 7 8 9 10 11 12。这是怎么回事,该如何解决呢? 展开
 我来答
loogear
2013-05-21 · 超过16用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:22.5万
展开全部
要判断 read(...)的返回值,如果不为0,就需要再次去读.
追问
可是,我是通过SIGNAL(readyRead()),触发调用读串口的函数的
追答
是的,但是read函数的定义你可以看看, ssize_t read(int fildes, void *buf, size_t nbyte);
The read() function attempts to read the specified amount of data from the specified file descriptor, into the specified buffer.
If the number of bytes is 0, then read() returns 0 and has no other results.
所以,一般的用法是用while循环去读取,直到返回值为0.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式