QT串行丢弃数据
QT Serial dropping data
我已经看了关于这个主题的几个问题,但没有什么能为我提供解决方案。
在虚拟机上测试时,我收到了47、80或31个字符长的传入数据。
串行端口的readyRead连接到:
void MainWindow::readData(){
QString buf;
myByteArray = serial->readAll();
for(int i = 0; i < myByteArray.size(); ++i){
if(myByteArray.at(i) == 'n'){
buf.append(myByteArray.at(i));
qDebug() << buf << endl;
buf.clear();
else{
buf.append(myByteArray.at(i));
}
我知道每条消息都以"\r\n"结尾,所以我们用它作为结束当前消息的点。
我遇到的问题是,我可能每50个人就会收到一条干净的信息。它正在左右删除字符。我有一个文本文件,显示了通过串行发送的消息,这样我就可以与收到的消息进行比较,它们的糟糕程度令人恶心。
我在其他线程中尝试过readLine()以及其他一些建议,结果总是一样的。
我的想法是检查收到的消息是否符合我预期的长度,47、80或31个字符,然后忽略不匹配的消息。问题是,我每2分钟就会收到一条干净的消息。。。。大概
如果我一得到数据就把它转储掉,结果与缓冲数据时没有什么不同。
我遇到的另一个问题是,我收到的每一条信息,我总共会错过3-4条。
关于如何更好地处理这个问题,有什么建议吗?
readAll
返回当前可用的内容。无法保证所有数据都已收到。我的猜测是,当你打电话时,你的数据仍在传输中。
您需要读取数据,直到收到rn
。
根据您的需要,您可能会发现readLine更易于使用。
相关文章:
- 从数据库实时显示QT c++中的数据
- 如何在Qt中从数据库中检索二进制数据?
- QT QOpenGLWidget:如何在不使用数据块复制的情况下修改VBO中的单个顶点值?
- C++/QT:使用指向私有成员的常量指针作为只读数据共享
- 模拟GPS数据,以便使用Qt与Traccar一起使用
- 如何将 json 数据附加到 Qt 中的现有 json 文件中
- 使用 QT C++过滤大数据的最佳方式
- Qt - 如何将"more"数据写入QProcess?
- libCURL:上传数据崩溃(Qt,SMTP)
- 面临在 if 语句之外打印变量数据的问题 完成使用 Qt 编程
- 将C++数据模型与Qt SCXML状态机一起使用
- Qt - 将空指针(原始数据)转换为 QImage 并将其显示在标签上
- 在QT C++编辑Qtable模型数据时,我需要得到一个小盒子,我需要显示编辑文本,这怎么可能?
- Qt C++ - 如何将数据从工作线程传递到主线程?
- Qt C++ - 如何成功将数据传递给子进程?
- 如何在Qt TableView中将列的宽度调整为数据并将最后一部分拉伸在一起
- QTcpSocket 发送的数据比想要的多 - Qt/C++
- Qt & SqlLite 将数据插入数据库
- 在计算机之间发送XML数据 - Qt.
- 序列化 JSON 数据 Qt.