实验内容与要求:
在物联网实验箱上实现一个温湿度显示系统,系统上电启动后自动启动此程序。每隔2秒自动刷新温湿度数据。温湿度数据从物联网试验箱自带的温湿度传感器获取。温湿度显示界面采用QT编程技术实现。
//formtemp.cpp
#include "formtemp.h"
#include "ui_formtemp.h"
FormTemp::FormTemp(QWidget *parent) :
QWidget(parent),
ui(new Ui::FormTemp)
{
ui->setupUi(this);
this->init();
}
FormTemp::~FormTemp()
{
delete ui;
}
void FormTemp::init()
{
ui->lcd_temp->setNumDigits(3);
ui->lcd_temp->setStyleSheet("QLCDNumber{background: transparent;}");
ui->lcd_hum->setNumDigits(3);
ui->lcd_hum->setStyleSheet("QLCDNumber{background: transparent;}");
serial_server = new SerialService();
serial_server->openCom();
timer = new QTimer;
connect(timer, SIGNAL(timeout()), this, SLOT(displayTempAndHum()));
timer -> start(2000);
temphum = new TempHum();
}
void FormTemp::displayTempAndHum()
{
serial_server->readFromSerial(buff);
temphum ->setValue(buff);
if(temphum->getTemperature()&&temphum->getHumidity()){
ui->lcd_temp->display(temphum->getTemperature());
ui->lcd_hum->display(temphum->getHumidity());
}
}
//temphum.cpp
#include "temphum.h"
TempHum::TempHum()
{
temperature = 0;
humidity = 0;
}
void TempHum::setValue(QByteArray& byte)
{
temperature = (byte[5] << 8) + byte[6];
humidity = (byte[7] << 8) + byte[8];
}
int TempHum::getTemperature()
{
return temperature;
}
int TempHum::getHumidity()
{
return humidity;
}
//temphum.h
#ifndef TEMPHUM_H
#define TEMPHUM_H
#include <QObject>
class TempHum :public QObject
{
Q_OBJECT
public:
explicit TempHum();
void setValue(QByteArray&);
int getTemperature();
int getHumidity();
private :
int temperature;
int humidity;
float light;
};
#endif // TEMPHUM_H
完整工程:http://download.youkuaiyun.com/detail/qq_29777421/9892878