|
1Qter豆
本帖最后由 waphaoyun 于 2014-7-15 11:33 编辑
最近在做上位机接收数据的软件,下位机发来五种传感器数据(关于温度,空气PM2.5浓度什么的数据),我需要把这五种数据分开做一些数据处理,然后显示到Label上,
由于下位机发送数据过快,我想在处理数据的时候停止接收数据,然后处理完后继续接收新数据,以便保持数据最新而且可以防止“卡死”! 部分代码如下,弄了好几天了,没有 进展,请各位老师帮忙指点一下,感激不尽!- Server::Server(QWidget *parent) :
- QDialog(parent),
- ui(new Ui::Server)
- {
- ui->setupUi(this);
- tcpServer = new QTcpServer(this);
- if(!tcpServer->listen(QHostAddress::Any,9888))
- {
- qDebug()<<tcpServer->errorString();
- close();
- }
- connect(tcpServer,SIGNAL(newConnection()),this,SLOT(readmMessage()));
- }
- Server::~Server()
- {
- delete ui;
- }
- void Server::readmMessage()
- {
- clientConnection=tcpServer->nextPendingConnection();
- connect(clientConnection,SIGNAL(readyRead()),this,SLOT(readmMessage1()));
- qDebug()<<"连接成功!";
- }
- void Server::readmMessage1()
- {
- if(clientConnection->bytesAvailable()>140)
- {
- // 我想在这里处理一些数据,想暂时忽略端口的数据,处理完数据后再接收新的数据,数据是由下位机发过来的,
- // 想处理数据的时候暂时忽略端口的数据,然后处理完再开始接收新的数据,我该怎么做?
- //想在这里停止接收,下面进行数据处理,
-
- QByteArray daterec = clientConnection->readAll().toHex();
-
- QString usestr= daterec.mid(1,28);
- QString stryy="ffff";
- int i=usestr.indexOf(stryy);
- QString shuju=usestr.mid(i,14);
- if(shuju.contains("0001"))
- {
- qDebug()<<"0x01";
- //数据处理比较长,并没有写完!
- }
-
- //想在这里恢复接收数据
- //ui->label->setText(str);
- // int temper;
- // float jiaquan,shidu,tvoc,pm;
- ;
- }
- }
复制代码 |
最佳答案
查看完整内容
这个不需要暂停接收数据啊。你可以试试直接这样写,效果如何?
|