案例分享:Qt高频fpga采集数据压力位移速度加速度分析系统(通道配置、电压转换、采样频率、通道补偿、定时采集、距离采集,导出excel、自动XY轴、隐藏XY轴、隐藏显示通道,文件回放等等)

简介: 案例分享:Qt高频fpga采集数据压力位移速度加速度分析系统(通道配置、电压转换、采样频率、通道补偿、定时采集、距离采集,导出excel、自动XY轴、隐藏XY轴、隐藏显示通道,文件回放等等)

需求

  1.0-7通道压力采集,采集频率1~100Khz(1,10,20,30…1000Khz);

  2.0-7通道压力,可设置补偿值,测量范围;

  3.编码器0,1脉冲采集,计算位移,速度,加速度;

  4.所有通道可设置别名,隐藏/显示状态;

  5.支持定时采集,指定距离采集(以编码器周长,分辨率与脉冲计算);

  6.支持分组,可将通道0-7分为2组,并且可以分别采集和停止;

  7.对设置设置界面和主界面的所有相关配置参数进行保存,并在下次启动时恢复最后一次启动的配置数据

  8.支持日志系统,对相关操作和数据进行日志输出

  9.支持坐标轴缩放;

  10.支持不同y坐标进行加权操作,使其显示在同一个图中;

  11.使用udp重传控制机制,保障传输大量数据时,数据传输速度快,稳定,可靠。

  12.支持需要的数据可打印;


相关博客

  《案例分享:Qt高频fpga采集数据压力位移速度加速度分析系统(通道配置、电压转换、采样频率、通道补偿、定时采集、距离采集,导出excel、自动XY轴、隐藏XY轴、隐藏显示通道,文件回放等等)

  《案例分享:Qt多段Y轴折线图框架(双Y轴段折线、支持拽拖、浮动游标显示X值各段Y值、支持大量实时显示下位机数据)

  《案例分享:Qt便携式致病菌快速检测仪(账号管理、实验过程、二维图表、历史数据、通讯管理、实验报告、中英文等等)

  《案例分享:Qt多通道数据采集系统(通道配置、电压转换、采样频率、通道补偿值、定时采集、导出excel和图表、自动XY轴、隐藏XY轴、实时隐藏显示通道)

  《Qt开发笔记之QCustomPlot:QCustomPlot介绍、编译与使用

  《Qt开发笔记之Qwt(一):Qwt介绍、编译与Demo


体验下载地址

  特别注意:发布用的模拟数据方式,过程中的演示Demo,模拟数据方式与数据处理相关的功能不可用。

  CSDN(免积分):https://download.csdn.net/download/qq21497936/23361384

  QQ群:1047134658(点击“文件”搜索“highFreq”,群内与博文同步更新)


Demo演示

  

  


Demo v1.20.1

  


Demo v1.7.1(提供模拟采集演示版本)

  

  

  

  

  回放,可查看之前采集的数据(回放之后,可导出当前回放的数据到excel表)


  数据导出为excel表,查看数据:

  

相关头文件源码

#ifndef HIGHFREQCOLLECTMAINWINDOW_H
#define HIGHFREQCOLLECTMAINWINDOW_H
#include <QMainWindow>
#include <QLabel>
#include <QPushButton>
#include <QAbstractButton>
#include <QCheckBox>
#include <QFrame>
#include <QElapsedTimer>
#include <QTimer>
#define SIMULATION  (1)     // 是否模拟
namespace Ui {
class HighFreqCollectMainWindow;
}
class HighFreqCollectMainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit HighFreqCollectMainWindow(QWidget *parent = 0);
    ~HighFreqCollectMainWindow();
protected:
    void loadCfg();
    void saveCfg();
    void updateEncodeStep();
protected:
    void initControls();
    void updateControls();
    void updateControlsPlayback();                                  // 更新控件回放控件
    void initCustomPlot();
protected slots:
    void slot_initControls();
protected slots:
    void slot_lineVisibleButtonClicked(bool checked);               // 是否显示通道槽函数
    void slot_startCollect();                                       // 开始采集槽函数
    void slot_startCollect2();                                      // 开始采集槽函数
    void slot_timeOutCollectEnd();                                  // 定时器停止
    void slot_timeOutCollectEnd2();                                 // 定时器停止
    void slot_startPlayback();                                      // 开始回放
    void slot_stopPlayback();                                       // 停止回放
private slots:
    void on_pushButton_apply_clicked();
#if SIMULATION
    void on_pushButton_startSimulationAll_clicked();                // 开始采集所有
    void on_pushButton_startSimulation_clicked();                   // 开始采集组1
    void on_pushButton_startSimulation2_clicked();                  // 开始采集组2
#endif
    void on_pushButton_stopAll_clicked();                           // 停止所有
    void on_pushButton_stop_clicked();                              // 停止组1
    void on_pushButton_stop2_clicked();                             // 停止组2
    void on_pushButton_group_clicked();
    void on_pushButton_channelSet_clicked();
    void on_pushButton_paramSet_clicked();
    void on_pushButton_playback_clicked();
    void on_pushButton_export_clicked();
    void on_pushButton_exit_clicked();
private:
    Ui::HighFreqCollectMainWindow *ui;
#if SIMULATION
public: // 模拟
    void startSimulation();
    void startSimulation2();
    void stopSimulation();
    void stopSimulation2();
protected slots:
    void slot_timeOutSimulation();
#endif
protected slots:
    void slot_playback();
private:
    bool _collecting;
    bool _collecting2;
    bool _collectFinished;
    bool _collectFinished2;
private:
    QList<QString> _listChannelName;
    QList<QColor> _listChannelColor;
    QList<double> _listChannelOffset;
    QList<double> _listChannelMin;
    QList<double> _listChannelMax;
    int _c;
    int _c2;
    int _n;
    int _n2;
    int _freq;
    int _mode;
    QString _saveDir;
    QList<QLabel *> _listLabelName;
    QList<QPushButton *> _listPushButton;
    QString _cfgFile;
    QList<QCheckBox *> _listCheckedBox;
private:
    QElapsedTimer _elapsedTimer;
#if SIMULATION
private:
    double _nowX;                       // 当前X值,即当前采集时间,从0开始
    double _nowMinY;                    // 最小Y值
    double _nowMaxY;                    // 最大Y值
    QTimer *_pTimerSimulation;          // 模拟采集时使用的定时器
    int _intervalSimulation;            // 模拟采集间隔
#endif
private:
    QTimer *_pTimerCollectEnd;          // 采集固定式时间时使用
    QTimer *_pTimerCollectEnd2;         // 采集固定式时间时使用
    double _distanceEnd;                // 采集固定距离时使用
    double _distanceEnd2;               // 采集固定距离时使用
    double _encoder0Count;              // 当前采集位移0脉冲数
    double _encoder1Count;              // 当前采集位移1脉冲数
    double _encoder0Step;               // 编码器0的脉冲位移
    double _encoder1Step;               // 编码器1的脉冲位移
private:
    QList<int> _listGroup1;             // 组1组成
    QList<int> _listGroup2;             // 组2组成
private:
    bool _playback;                     // 当前是否回放
    QString _record;                    // 回放的记录名称(文件夹名称,yyyy-MM-dd hh-mm-ss)
    QTimer *_pTimerPlayback;            // 回放读取数据定时器
    bool _firstPlayback;
};
#endif // HIGHFREQCOLLECTMAINWINDOW_H



相关文章
|
27天前
|
easyexcel
【EasyExcel】第二篇:导出excel文件,导出多个sheet工作空间
【EasyExcel】第二篇:导出excel文件,导出多个sheet工作空间
|
28天前
|
JavaScript 前端开发
【导出Excel】Vue实现导出下载Excel文件(blob文件流)--亲测可用
【导出Excel】Vue实现导出下载Excel文件(blob文件流)--亲测可用
【导出Excel】Vue实现导出下载Excel文件(blob文件流)--亲测可用
|
4天前
|
JSON JavaScript 前端开发
使用JavaScript和XLSX.js将数据导出为Excel文件
使用JavaScript和XLSX.js将数据导出为Excel文件
14 0
|
11天前
|
存储 算法 异构计算
m基于FPGA的多功能信号发生器verilog实现,包含testbench,可以调整波形类型,幅度,频率,初始相位等
使用Vivado 2019.2仿真的DDS信号发生器展示了正弦、方波、锯齿波和三角波的输出,并能调整幅度和频率。DDS技术基于高速累加器、查找表和DAC,通过频率控制字和初始相位调整产生各种波形。Verilog程序提供了一个TEST模块,包含时钟、复位、信号选择、幅度和频率控制输入,以生成不同波形。
33 18
|
17天前
|
easyexcel 数据库
公司大佬对excel导入、导出的封装,那叫一个秒啊
封装公司统一使用的组件的主要目标是为了简化开发人员的调用流程,避免各个项目组重复集成和编写不规范的代码。文中提到对阿里EasyExcel进行了二次封装,提供了导入和导出功能,并支持模板的导入和导出。此外,还处理了读取数据与实际保存数据不一致的情况,通过提供自定义转换器来解决。
38 0
|
17天前
|
数据库
开发指南009-从list导出excel文件
从数据库返回一般是对象的列表,平台底层提供了从list转为excel文件的方法
|
17天前
|
前端开发
开发指南007-导出Excel
平台上开发导出Excel比过去的单体架构要复杂些,因为前端和后台不在一个进程空间里。
|
28天前
|
C#
C# gridControl 导出Excel
C# gridControl 导出Excel
|
2月前
|
算法 编译器 Linux
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
23 0
|
2月前
|
网络协议 C++
C++ Qt开发:QTcpSocket网络通信组件
`QTcpSocket`和`QTcpServer`是Qt中用于实现基于TCP(Transmission Control Protocol)通信的两个关键类。TCP是一种面向连接的协议,它提供可靠的、双向的、面向字节流的通信。这两个类允许Qt应用程序在网络上建立客户端和服务器之间的连接。Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用`QTcpSocket`组件实现基于TCP的网络通信功能。
39 8
C++ Qt开发:QTcpSocket网络通信组件