基于Qt的车载GPS监控系统(7)数据记录

来源:互联网 发布:威锋网的mac论坛 编辑:程序博客网 时间:2024/04/29 20:35

基于Qt的车载GPS监控系统(7)数据记录

数据日志显示界面

这里写图片描述

系统数据记录功能实现说明
1.通过一个线程定时记录系统当前的温度数据。
2.通过数据日志界面显示保存的日志数据

数据记录线程代码

#ifndef THREAD_H#define THREAD_H#include"dht9000.h"#include<QThread>class Thread:public QThread{    Q_OBJECTpublic:    Thread();public slots:    void goAddTime();protected:    void run();    int is_trigger(float temp);    struct st_sys_dev g_dev[1];    int time_log;private:    float ftemp;};#endif // THREAD_H
#include<thread.h>#include<dht9000.h>#include<QTimer>#include<QTime>#include<QDate>#include<QDebug>Thread::Thread(){    time_log = 0;    QTimer *timer = new QTimer(this);    connect(timer, SIGNAL(timeout()), this, SLOT(goAddTime()));    timer->start(1000);    qDebug() << "thread start...";}void Thread::goAddTime(){    time_log++;//控制记录间隔时间    ftemp = rand()%100;//产生随机的温度}int Thread::is_trigger(float temp){        char flag = 0;        int tem_max,tem_min;        tem_max = g_dev->alarm_set.temp_upper;        tem_min = g_dev->alarm_set.temp_lower;        //判断一下极限值是否报警        if(temp>tem_max || temp<tem_min)            flag = 1;        return flag;}void Thread::run(){    while(1){    //  if(time_log>=(g_dev->log_time*60) && time_log>=60){        if(time_log>=30){                load_dev(g_dev);                time_log = 0;                if(g_dev->log_index >= MAX_RECORD)  g_dev->log_index = 0;                if(g_dev->log_index < 0) g_dev->log_index = 0;                g_dev->logd[g_dev->log_index].log_temp = ftemp;                g_dev->logd[g_dev->log_index].state = is_trigger(ftemp);                QDate date = QDate::currentDate();                QString text = date.toString("yy.MM.dd");                strcpy(g_dev->logd[g_dev->log_index].date,text.toAscii().data());                QTime time = QTime::currentTime();                QString text2 = time.toString("hh:mm:ss");                strcpy(g_dev->logd[g_dev->log_index].time,text2.toAscii().data());                if(g_dev->log_count++ > MAX_RECORD)  g_dev->log_count=MAX_RECORD;                qDebug() << "save" << g_dev->logd[g_dev->log_index].log_humi;                qDebug() << "log_index" << g_dev->log_index;                g_dev->log_index++;                save_dev(g_dev);        }    }}

数据日志显示代码

#ifndef RECORDDIALOG_H#define RECORDDIALOG_H#include "setdialog.h"#include<QTableWidget>#include"dht9000.h"class RecordDialog:public SetDialog{    Q_OBJECTpublic:    RecordDialog(QWidget *parent = 0);public slots:private:    void creatColTitle(QTableWidget *table,int col,char* title,char*image);    QTableWidget *table;};#endif // RECORDDIALOG_H
#include<recorddialog.h>RecordDialog::RecordDialog(QWidget *parent)    :SetDialog(parent){    this->lineTitle->setText(tr("数据日志"));    load_dev(g_dev);    int row;    int col;    table = new QTableWidget(this);    table->setRowCount(20);    table->setColumnCount(5);    char  title[20];    QString itemStr;    QTableWidgetItem *newItem;    for(col = 0;col < 5; col++){        switch(col){            case 0:                strcpy(title,"状态");                break;            case 1:                strcpy(title,"温度");                break;            case 2:                strcpy(title,"湿度");                break;            case 3:strcpy(title,"日期");break;            case 4:strcpy(title,"时间");break;        }        creatColTitle(table,col,title,":/images/1.png");        for(row = 0;row < 20;row++){            switch(col){                case 0:                    strcpy(title,"状态");                    itemStr.setNum(g_dev->logd[row].state);                    break;                case 1:                    strcpy(title,"温度");                    itemStr.setNum(g_dev->logd[row].log_temp);                    break;                case 2:                    strcpy(title,"湿度");                    itemStr.setNum(g_dev->logd[row].log_humi);                    break;                case 3:                    strcpy(title,"日期");                    //itemStr=QString(g_dev->logd[row].date);                    break;                case 4:                    strcpy(title,"时间");                    //itemStr=QString(g_dev->logd[row].time);                    break;            }            newItem = new QTableWidgetItem(itemStr);            table->setItem(row, col, newItem);        }    }    table->setGeometry(QRect(140, 130, 540, 230));}void RecordDialog::creatColTitle(QTableWidget *table,int col,char* title,char*image){    QTableWidgetItem *headerItem = new QTableWidgetItem(tr(title));    headerItem->setIcon(QIcon(QPixmap(image)));    headerItem->setTextAlignment(Qt::AlignHCenter);    table->setHorizontalHeaderItem(col,headerItem);}
0 0
原创粉丝点击