嵌入式Linux--基於物聯網實驗環境的溫溼度實時顯示系統
阿新 • • 發佈:2019-01-06
實驗內容與要求:
在物聯網實驗箱上實現一個溫溼度顯示系統,系統上電啟動後自動啟動此程式。每隔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