| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 145 人关注过本帖
标题:qt5.14.2+dht22+arduino 串口传输实时采集数据
只看楼主 加入收藏
niefeng0429
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2023-1-19
收藏
 问题点数:0 回复次数:6 
qt5.14.2+dht22+arduino 串口传输实时采集数据
本人新手一枚,近期遇到一个问题,想请教高手解答, 我用arduino 连接dht22  采集实时温湿度数据,下位机已经做好了,自己做了一个串口通讯上位机 用来显示温湿度数据和波形图,现在问题是 能接收下位机返回来的实时温湿度数据,但是在上位机界面显示不完整, 比如说温度23.9 湿度60.1  在lineedit或lcdnumber 只显示3.9 或者湿度控件直接显示0  我也曾试图split分隔采集来的数据,但没成功, 请高手指教一二, 不胜感激 可附代码图
搜索更多相关主题的帖子: 实时 数据 采集 arduino 串口 
2023-01-19 10:41
niefeng0429
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2023-1-19
收藏
得分:0 
void Widget::AnalyzeData()
{//读取数据

    QByteArray recvData = myserial->readAll();//定义mytemp为串口读取的所有数据
    recvData.resize(1024);
    qDebug()<<"recvData:"<<recvData;

    if(!recvData.isEmpty())
        {//从dht22采集来的数据进行转换 由bytearray 转成int

        QString StrI1=recvData.toHex().mid(8,2);
        QString StrI2=recvData.toHex().mid(24,2);
        //.toHex()这一步很关键,没有这一步显示的是乱码
           int tem=StrI1.toInt(0,16);
           int hum=StrI2.toInt(0,16);
           ui->textBrowser->insertPlainText(recvData);
           ui->lab_Temp->setText(StrI1);//显示读取温度值
           ui->lab_Humi->setText(StrI2);//显示读取湿度值
           ui->tem_lcdNumber->display(tem);
           ui->hum_lcdNumber->display(hum);
           recvData.clear();
2023-01-19 11:18
niefeng0429
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2023-1-19
收藏
得分:0 
void Widget::AnalyzeData()
{//读取数据

        QByteArray recvData;
        recvData = myserial->readAll();//定义mytemp为串口读取的所有数据     
        qDebug()<<"recvData:"<<recvData;

        if(!recvData.isEmpty())
        {//从dht22采集来的数据进行转换 由bytearray 转成float

            QString str;
            str = QString::fromLocal8Bit(recvData);
            QStringList list = str.split(",");

            QString str1 = str.mid(0,5);
            QString str2 = str.mid(6,5);

            float tem = str1.toFloat();//转成浮点型
            float hum = str2.toFloat();

           //在文本框和控件中显示温湿度值
            ui->textBrowser->insertPlainText(recvData);
            ui->tem_lcdNumber->display(tem);//显示读取温度值
            ui->hum_lcdNumber->display(hum);//显示读取湿度值



我尝试了另外一种方式,还是不行,不知道哪里出问题了? 还请高手指教
2023-01-19 11:27
niefeng0429
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2023-1-19
收藏
得分:0 
因为下位机传输过来的数据是温湿度一起的 比如:23.9 50.8  ui->textBroser->insertPlainText(recvData) 这里来的数据没问题  就是在显示控件上显示的温湿度不对,
2023-01-19 11:30
niefeng0429
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2023-1-19
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2023-01-19 11:32
niefeng0429
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2023-1-19
收藏
得分:0 
这个就是结果, 下面传输过来的温湿度 没问题,但是在显示控件上 温度25.6 少2  湿度值 干脆就是显示0  不知道为什么? 请高手指点
2023-01-19 11:33
_nullptr
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2023-2-6
收藏
得分:0 
这个事我遇到过  还是要转换一下 全部转成字符串传出来 qstring temp hump   
                       temp=m_temp=QString::number((float)m_tempdatabuf/10,'f',1);
                       humd=m_humd=QString("%1").arg((float)m_humdatabuf/10);    我例子里这样弄传出来就没事了  应该可以看明白了吧
前天 15:04
快速回复:qt5.14.2+dht22+arduino 串口传输实时采集数据
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030090 second(s), 9 queries.
Copyright©2004-2023, BCCN.NET, All Rights Reserved