需求

  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采集数据压力位移速度加速度分析系统(通道配置、电压转换、采样频率、通道补偿、定时采集、距离采集,导出exce、自动XY轴、隐藏XY轴、隐藏显示通道,文件回放等等)
  《案例分享:Qt多通道数据采集系统(通道配置、电压转换、采样频率、通道补偿值、定时采集、导出excel和图表、自动XY轴、隐藏XY轴、实时隐藏显示通道)
  《案例分享:Qt多段Y轴折线图框架(双Y轴段折线、支持拽拖、浮动游标显示X值各段Y值、支持大量实时显示下位机数据)
  《案例分享: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
 

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

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

  1. 性能调优案例分享:Mysql的cpu过高

    性能调优案例分享:Mysql的cpu过高   问题:一个系统,Mysql数据库,数据量变大之后.mysql的cpu占用率很高,一个测试端访问服务器时mysql的cpu占用率为15% ,6个测试端连服务 ...

  2. 项目实战:Qt多通道数据采集系统(通道配置、电压转换、采样频率、通道补偿值、定时采集、导出exel和图表、自动XY轴、隐藏XY轴、实时隐藏显示通道)

    需求   1.通道使能.选择.更改通道名称.设置显示颜色  2.采样率可设置(Sa/s/chj)  3.单位换算,按照给定的进行换算  4.对通道可进行设置补偿值  5.通道取消可动态显示和隐藏,并可 ...

  3. 案例分享:Qt西门子机床人机界面以及数据看板定制(西门子通讯,mysql数据库,生产信息,参数信息,信息化看板,权限控制,播放器,二维图表,参数调试界面)

    若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/118685521 长期持续带来更多项目与技术分享 ...

  4. 案例分享:Qt+Arm基于RV1126平台的内窥镜软硬整套解决方案(实时影像、冻结、拍照、录像、背光调整、硬件光源调整,其他产品也可使用该平台,如视频监控,物联网产品等等)

    自研产品系列方案   1. 基于瑞芯微的 RV1126 芯片平台:  2. 外接 USB 摄像头(OV9734. OV6946.OV2740 等 UVC 模块)作为图像输入源:  3. 可通过 LED ...

  5. C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子)

    第一次接触HtmlAgilityPack是在5年前,一些意外,让我从技术部门临时调到销售部门,负责建立一些流程和寻找潜在客户,最后在阿里巴巴找到了很多客户信息,非常全面,刚开始是手动复制到Excel, ...

  6. Arduino UNO +ESP8266采集数据上传到贝壳网

    集成电路设计大赛赛程将至,我现在还是毫无头绪,然后又报了一个互联网+,比赛报了,东西就必须出来,时间很紧的情况下,所以选择了开源的arduino的进行完成.从开始接触Arduino到完成工程,前前后后 ...

  7. mysql的"双1设置"-数据安全的关键参数(案例分享)

    mysql的"双1验证"指的是innodb_flush_log_at_trx_commit和sync_binlog两个参数设置,这两个是是控制MySQL 磁盘写入策略以及数据安全性 ...

  8. MySQL数据库详解之"双1设置"的数据安全的关键参数案例分享

    mysql的"双1验证"指的是innodb_flush_log_at_trx_commit和sync_binlog两个参数设置,这两个是是控制MySQL 磁盘写入策略以及数据安全性 ...

  9. C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 VC中进程与进程之间共享内存 .net环境下跨进程、高频率读写数据 使用C#开发Android应用之WebApp 分布式事务之消息补偿解决方案

    C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing). ...

  10. 基于FPGA的光口通信开发案例|基于Kintex-7 FPGA SFP+光口的10G UDP网络通信开发案例

    前言 自著名华人物理学家高锟先生提出"光传输理论",实用化的光纤传输产品始于1976年,经历了PDH→SDH→DWDM→ASON→MSTP的发展历程.本世纪初期,ASON/OADM ...

随机推荐

  1. [转帖]金仓数据库KingbaseES V8R6 中unlogged表

    KingbaseESV8R6有一种表称为unlogged,在该表新建的索引也属于unlogged.和普通表的区别是,对该表进行DML操作时候不将该表的变更记录变更写入到wal文件中.在数据库异常关机或 ...

  2. [转帖]CygWin、MingW、MSYS之间的关系

    https://www.jianshu.com/p/09198f6e0a3c 前言 在跨平台开发或移植中,经常会听说Cygwin.MingW.MSYS,他们之间是什么关系?对于将要完成的任务,应该选择 ...

  3. [转帖]一本正经的八卦一下CPU的自主可控 之二

    https://zhuanlan.zhihu.com/p/62399200 一本正经的八卦一下CPU的自主可控 之二 上回书说到CPU自主可控第一个层面的指令集问题.这回聊一聊接下来的设计问题. 第二 ...

  4. [专题]测试发现部分NVMe SSD的掉电数据保护功能让人失望

    https://www.cnbeta.com/articles/tech/1240441.htm 这个有点过分了. 苹果开发者 Russ Bishop 在一份测试报告中指出:即使掉电保护已经是个绕不开 ...

  5. DashBoard in k8s 简单使用

    DashBoard in k8s 简单使用 第一部分 拉取分发镜像 没办法的事情,公司网络实在是太垃圾了, dockerhub 又不让多次docker pull 找一台网络表好的机器 执行如下命令: ...

  6. 在k8s中的控制器和部署服务-ReplicationController和ReplicaSet

    pod 代表了 k8s 中的基本部署单元,但是在实际应用场景中,服务不可能是单个pod运行的,否则会出现"单点".在 k8s 中对 pod 的托管部署,专门抽象成了单独的资源.其中 ...

  7. 清空elementui让计数器input-number的默认值

    <el-form-item label="考试时长:" prop="testTimeLong"> <el-input-number style ...

  8. 去除elementUI中tab组件中的下划线

    <div class="right-tabbox-newnotice"> <el-tabs v-model="activeName" @tab ...

  9. 在K8S中,Pod创建过程包括什么?

    在Kubernetes(K8s)中,Pod的创建过程通常包括以下步骤: 提交Pod定义: 用户通过kubectl命令行工具或者调用API Server接口,提交一个包含Pod配置信息的YAML或JSO ...

  10. vim 从嫌弃到依赖(20)——global 命令

    在前面的文章中,我们介绍了如何进行查找和替换,而替换是建立在查找基础之上的一个简单的应用,它只是将匹配文本修改为另一个.那么vim中还能针对匹配上的文本做哪些操作呢?在本篇文章中我们来对这个问题进行探 ...