从端口读取时缺少 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 字节的数据吗?