开发板采集数据后存入数据库再在电脑上显示数据库

1. 预想效果

屏幕分为左右两边。左边分为两块,点击上面的将在右边显示实时数据;点击下面的将在右边显示出一个数据库的表,即历史数据。闭门造车过于难受,先咕了

两个程序。

开发板负责采集数据+展示实时数据+存入数据库。

虚拟机负责展示数据库数据。

数据库传输直接手动scp。

2. 实体数据

四个:

  1. 当前时间(QString)
  2. 环境光强度(QString)
  3. 接近距离(QString)
  4. 红外强度(QString)

3. 存储方式

数据库。

4. 开发思路

后端思路

设置时间,每隔5秒获取一次当前的时间 + i2c实验的三个数据,并存入数据库。

前端思路

左边为操作区,右边为显示区。一开始默认显示实时数据,点击左下方时查询数据库显示历史数据。

5. 代码板子

5.1 时间

/*获取当前时间*/
#include <QDateTime>
#include <QDebug>

QDateTime current_date_time =QDateTime::currentDateTime();
QString current_date =current_date_time.toString("yyyy.MM.dd hh:mm:ss");
qDebug() << current_date;

5.2 每隔 5 秒

/*.h要加上private slots 触发函数*/
private slots:
    void timerTimeOut();

---------------------------------
//每隔5秒打印一行字
//最初始会停顿5秒
#include "mainwindow.h"
#include <QDateTime>
#include <QDebug>
#include <QTimer>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QTimer *timer;
    timer = new QTimer(this);
    timer->start(5000); //5s
    connect(timer, SIGNAL(timeout()), this, SLOT(timerTimeOut()));
}

MainWindow::~MainWindow()
{
}

void MainWindow::timerTimeOut()
{
    qDebug() << "过去了5秒";
}

5.3 获取 i2c 实验的三个数据

//als ps ir是三个数据
void MainWindow::getAp3216cData()
{
    static QString als = ap3216c->alsData();
    if (als != ap3216c->alsData()) {
        als = ap3216c->alsData();
        arcGraph[0]->setangleLength(als.toUInt() * 360 / 65535);
    }

    static QString ps = ap3216c->psData();
    if (ps != ap3216c->psData()) {
        ps = ap3216c->psData();
        arcGraph[1]->setangleLength(ps.toUInt() * 360 / 1023);
    }

    static QString ir = ap3216c->irData();
    if (ir != ap3216c->irData()) {
        ir = ap3216c->irData();
        arcGraph[2]->setangleLength(ir.toUInt() * 360 / 1023);
    }

    glowText[0]->setTextData(als);
    glowText[1]->setTextData(ps);
    glowText[2]->setTextData(ir);
}

5.4 存入数据库

教材里面的代码和前端杂在一起,要将对数据库的操作分离开来。

经测试,可以用这样的语法插入数据

model->setTable("data");
int row = model->rowCount();
model->insertRow(row);
model->setData(model->index(row,0), s1); //QString
model->setData(model->index(row,1), s2);
model->setData(model->index(row,2), s3);
model->setData(model->index(row,3), s4);
model->submit();

5.5 读取数据库

结合数据库2的教程,显示到表格中。

应该是这个

/* 创建数据映射,将前面的数据库内容映射到控件上 */
dataWidgetMapper->addMapping(lineEdit, 1);
dataWidgetMapper->addMapping(spinBox[0], 0);
dataWidgetMapper->addMapping(spinBox[1], 2);
dataWidgetMapper->addMapping(comboBox, 3);

6. 效果展示

在这里插入图片描述

忽略时间这个bug…在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值