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


    1. 预想效果

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

    两个程序。

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

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

    数据库传输直接手动scp。

    2. 实体数据

    四个:

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

    3. 存储方式

    数据库。

    4. 开发思路

    后端思路

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

    前端思路

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

    5. 代码板子

    5.1 时间

    /*获取当前时间*/
    #include 
    #include 
    
    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 
    #include 
    #include 
    
    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…在这里插入图片描述

  • 相关阅读:
    【校招VIP】产品思维设计之需求分析
    nvm多node版本windows版安装与使用(踩坑记)
    JavaFX Scene Builder Miscellaneous 控件详解
    CSS-clamp 函数说明
    图技术赋能民生银行创新转型
    Elasticsearch通过Http请求实现索引操作以及文档操作
    MYSQL的游标
    神经网络系列---分类度量
    第九章 无线网络和移动网络 | 计算机网络(谢希仁 第八版)
    jupyter notebook插件安装及插件推荐
  • 原文地址:https://blog.csdn.net/weixin_51368613/article/details/127113236