qt 一个字节一个字节读取串口数据

接收虚拟串口的数据,发送了一万多个字节,但是只能接收几千个,接收不完整。用了延时也没用。波特率115200

该回答引用NewBing

您好,这个问题可能是由于Qt串口接收数据时,使用QSerialPort类的readyRead()信号,只要有数据发送过来就发送该信号,这就导致一条数据可能分多次抛出。由于正常的数据没有固定的开头和结尾,这就导致无法获取正常的一组数据。(1)(2)


解决方法可以有以下几种:

  1. 确定一个完整的开始标志和结尾标志,解决思路:增加接收延时功能,把多次读取的数据保存到缓冲区,延时结束后再进行处理。(3)
  2. 使用Pipe的方式来实现,每次接收的数据放到pipi->buf里,pipi->in本次接收相应的字节 pipi-> sum是接收的总字节数。(1)

希望这些信息能够帮到您。


源: 与必应的对话, 2023/4/21