• 案例分享:Qt高频fpga采集数据压力位移速度加速度分析系统(通道配置、电压转换、采样频率、通道补偿、定时采集、距离采集,导出exce、自动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.支持需要的数据可打印;

     

    相关博客

     

    体验下载地址

      特别注意:发布用的模拟数据方式,过程中的演示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
    
     

    若该文为原创文章,转载请注明原文出处
    本文章博客地址:https://hpzwl.blog.csdn.net/article/details/120345072

  • 相关阅读:
    AX 2009 实现对display 方法过滤
    AX 2009实现数据验证方法
    AX 2009 实现outlook发送邮件并带多个附件
    AX 2009 销售订单导入导出
    Mixin技术与分布类编程
    关于python装饰器的总结
    作为软件工程师,你必须知道的20个常识
    Python装饰器基础语法总结
    如何成为一名黑客(转)
    python的对象和类
  • 原文地址:https://www.cnblogs.com/qq21497936/p/15304061.html
Copyright © 2020-2023  润新知