找回密码
 立即注册
收起左侧

关于上位机接收数据遇到一些问题

6
回复
8076
查看
[复制链接]

尚未签到

来源: 2014-7-15 11:23:12 显示全部楼层 |阅读模式
1Qter豆
本帖最后由 waphaoyun 于 2014-7-15 11:33 编辑

最近在做上位机接收数据的软件,下位机发来五种传感器数据(关于温度,空气PM2.5浓度什么的数据),我需要把这五种数据分开做一些数据处理,然后显示到Label上,
由于下位机发送数据过快,我想在处理数据的时候停止接收数据,然后处理完后继续接收新数据,以便保持数据最新而且可以防止“卡死”! 部分代码如下,弄了好几天了,没有 进展,请各位老师帮忙指点一下,感激不尽!
  1. Server::Server(QWidget *parent) :
  2.     QDialog(parent),
  3.     ui(new Ui::Server)
  4. {
  5.     ui->setupUi(this);
  6.     tcpServer = new QTcpServer(this);
  7.     if(!tcpServer->listen(QHostAddress::Any,9888))
  8.     {
  9.         qDebug()<<tcpServer->errorString();
  10.         close();
  11.     }
  12.     connect(tcpServer,SIGNAL(newConnection()),this,SLOT(readmMessage()));

  13. }

  14. Server::~Server()
  15. {
  16.     delete ui;
  17. }

  18. void Server::readmMessage()
  19. {

  20.     clientConnection=tcpServer->nextPendingConnection();
  21.     connect(clientConnection,SIGNAL(readyRead()),this,SLOT(readmMessage1()));
  22.     qDebug()<<"连接成功!";

  23. }

  24. void Server::readmMessage1()
  25. {





  26.     if(clientConnection->bytesAvailable()>140)
  27.     {


  28.      //   我想在这里处理一些数据,想暂时忽略端口的数据,处理完数据后再接收新的数据,数据是由下位机发过来的,
  29.       //  想处理数据的时候暂时忽略端口的数据,然后处理完再开始接收新的数据,我该怎么做?
  30.     //想在这里停止接收,下面进行数据处理,
  31.         
  32.         QByteArray daterec = clientConnection->readAll().toHex();

  33.       
  34.        QString usestr= daterec.mid(1,28);
  35.        QString stryy="ffff";
  36.        int i=usestr.indexOf(stryy);
  37.            QString shuju=usestr.mid(i,14);
  38.            if(shuju.contains("0001"))
  39.            {
  40.                qDebug()<<"0x01";
  41.                //数据处理比较长,并没有写完!
  42.            }
  43.       


  44. //想在这里恢复接收数据





  45.        //ui->label->setText(str);
  46. //                 int temper;
  47. //                 float jiaquan,shidu,tvoc,pm;

  48.     ;



  49.     }

  50. }
复制代码

最佳答案

查看完整内容

这个不需要暂停接收数据啊。你可以试试直接这样写,效果如何?
回复

使用道具 举报

累计签到:1568 天
连续签到:1 天
2014-7-15 11:23:13 显示全部楼层
waphaoyun 发表于 2014-7-15 11:27
@yafeilinux    **贴,求助老师

这个不需要暂停接收数据啊。你可以试试直接这样写,效果如何?
回复

使用道具 举报

尚未签到

2014-7-15 11:27:42 显示全部楼层
@yafeilinux    **贴,求助老师
回复

使用道具 举报

累计签到:87 天
连续签到:1 天
2014-7-15 14:08:38 显示全部楼层
要么用一个线程来接收数据 另个线程分析数据?

没搞懂数据再多也分析的过来啊。。

要么就先存下来写入数据文件,然后解析这个数据文件
回复

使用道具 举报

累计签到:87 天
连续签到:1 天
2014-7-15 14:09:47 显示全部楼层
你i用的是listen 有数据就会收,要不处理数据的时候挂起下看看?

回复

使用道具 举报

尚未签到

2014-7-15 15:59:10 显示全部楼层
20030969 发表于 2014-7-15 14:09
你i用的是listen 有数据就会收,要不处理数据的时候挂起下看看?

除了listen还能用什么?? 另**起是怎么回事,,,,指点我一下呗,,小弟新手
回复

使用道具 举报

尚未签到

2014-7-15 16:20:48 显示全部楼层
20030969 发表于 2014-7-15 14:09
你i用的是listen 有数据就会收,要不处理数据的时候挂起下看看?

挂起 是怎么弄?             是哪个函数啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了