从端口读取时缺少 qserialport 数据,但返回 9 个可用字节

Posted

技术标签:

【中文标题】从端口读取时缺少 qserialport 数据,但返回 9 个可用字节【英文标题】:qserialport data missing while reading from port but returns 9 bytes available 【发布时间】:2014-08-11 04:28:25 【问题描述】:

使用qextserialport函数readdata从端口读取时发生数据丢失

例如 serialobj->bytesavailable 返回 9 个字节,而 serialobj->readData 仅从 pic 微控制器返回两个字符

【问题讨论】:

在 readData() 的文档中,我看到 readData 返回一个整数。 (从设备读取最多 maxSize 个字节到数据中,并返回读取的字节数,如果发生错误,则返回 -1。)。你有什么价值? 我有收到的总字节数, char arr_cReadbuffer[1024]; int nBytesAvailable = m_serialportCoProcessor->bytesAvailable(); qDebug() 0 ) /* 读取可用字节 */ int nBytesReceived = m_serialportCoProcessor->readData(arr_cReadbuffer,nBytesAvailable); qDebug() 你应该编辑你的帖子,在适当的标签之间添加你的代码,因为它不可读。 qtcentre.org/threads/… 【参考方案1】:

从 cmets 判断,您正试图将接收到的字节打印到控制台。显然,您尝试打印的某些字节是不可打印的,并且不会产生视觉输出。

也许您想查看以十六进制为基数的字节值:

qDebug() << serialObj->readData().toHex();

【讨论】:

@TeamSwatkats 这些字节不可打印,因此打印它们不会产生可见的输出。 我怎样才能收到所有的字节有什么办法 @TeamSwatkats 您已收到字节。他们在那里。您只是看不到它们,因为它们不可打印。这有什么难理解的?并非所有字节都对应于可打印字符。

以上是关于从端口读取时缺少 qserialport 数据,但返回 9 个可用字节的主要内容,如果未能解决你的问题,请参考以下文章

QSerialPort readyRead 信号仅在应用程序被 waitForReadyRead() 阻塞时发出

QSerialPort 可以读取超过 512 字节的数据吗?

从另一个线程向 QSerialPort 发送数据

QSerialPort 和虚拟端口仿真器

在应用程序先前由“root”运行后,QSerialPort 无法打开 tty [重复]

打开时 QSerialPort 错误信号,但打开返回 true