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。这是怎么回事,该如何解决呢?
展开
1个回答
展开全部
要判断 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.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询