qt - 如何知道何时收到完整的数据包(QSerialPort)
问题描述
我使用 QSerialPort 从计算机的串行端口接收数据。它运作良好。但是,当我的设备发送 00aabbcc 时,即使只收到 00 或 00aa,也会调用 readReady() 信号。
只有在收到所有 00aabbcc 时,我才能获得信号?
这是我在插槽中的代码:
QByteArray data = mySerial->readAll();
QString DataAsString = data.toHex();
ui->logArea->append(DataAsString);
我在 textEdit logArea 中看到的是:
00
aabb
cc
00aabb
cc
我需要的是
00aabbcc
00aabbcc
解决方案
readReady()
一旦你在缓冲区中得到一些东西就会触发。如果您想读取固定数量的字节,您需要自己检查数据包大小。
该解决方案应该适合您。
推荐阅读
- html - 在透明导航栏下方显示网站背景
- centos - 当我查看 freeswitch 日志时,会看到以下错误
- go - 反向绑定的缺失样本申请
- c# - 如何在 WCF 应用程序中配置应用程序端以与预配置的 ADFS 服务器进行 SSL 连接?
- c++ - 如何同步多个 esp8266?
- terraform - 如何在 terraform 中回滚到以前的状态
- variables - 使用concat()动态调用参数,选择元素名称
- spring-boot-admin - Spring Boot Admin:自定义标头身份验证
- mongodb - 如何修复“无法识别的表达式 $round”,同时使用 mongodb $and 条件和 $lookup 将其应用于管道中的存储数据
- sql-server - 将动态参数传递给 SQL