基于 ARM+FPGA+AD平台的多类型同步信号采集仪开发及试验验证(一)上位机设计

采集仪上位机设计
本章开发了一款基于 C# 的上位机软件,用于对多类型同步信号采集仪的各项功能
进行操作。从采集仪的数据传输需求出发,上位机利用以太网 UDP 协议实现与采集仪
的数据交互,包括向采集仪发送控制信息与配置信息、接收采集仪传来的 AD 数据,然
后对数据进行解析,根据面向用户原则,开发图形用户界面 GUI ,实现性能配置、数据
可视化和本地存储的功能。
4.1 总体设计
本文开发的多类型同步信号采集仪可以根据 UDP 协议传来配置信息对 AD 芯片进
行配置,并通过 UDP 协议发送同步采集到的 AD 芯片数据,因此,用于对采集仪进行
各项功能操作的上位机软件将实现如下的功能:开发 UDP 从机与采集仪 UDP 主机建立
通信;通过 UDP 协议向采集仪发送配置信息和控制信息;通过 UDP 协议接收采集仪发
送过来的 AD 数据;开发面向用户的图形用户界面 GUI ;实现数据配置、数据可视化与
本地存储的功能。
根据上述需求分析,上位机软件模型可划分为主界面模块、数据交互模块、数据配
置模块、数据可视化模块和数据本地存储模块,利用这五个模块来实现对采集仪的各项
功能操作,功能模块结构如图 4.1 所示。
上位机的每个模块实现功能如下:
1 )主界面模块:搭建起 GUI 的整体界面,后续的子界面均在主界面中添加。
2 )数据交互模块:搭建 UDP 从机,建立起与采集仪的 UDP 通信,将数据配置
模块的配置信息通过 UDP 协议发送到采集仪,接收采集仪通过 UDP 协议发送来的 AD
数据并将其传送给数据可视化模块。
3 )数据配置模块:建立数据配置界面,用户可以对每一个通道 AD 芯片的类型
与灵敏度进行设置,类型信息发送到采集仪进行配置,灵敏度信息将用于数据可视化模
块对数据进行解析。
4 )数据可视化模块:建立数据可视化界面,根据灵敏度信息对采集仪发送来的
AD 数据处理,用户可以观察到每一个通道数据的变化曲线。
5 )数据本地存储模块:建立数据本地存储设置界面,用户可以根据监测需求对解
析后的 AD 数据进行相应的存储。
4.1.1 C#编程语言
C# 是一款由微软开发的现代通用面向对象的编程语言,凭其简洁的语法与强大的性
能得到广大程序员的青睐,在接近 C C++ 构想的同时也兼顾了 Java 的特性,并提供
了可视化工具,可以方便快捷高效地开发 GUI 界面等应用程序,因此,本文选用 C#
写采集仪的上位机,完成对采集仪的控制与配置功能。
C# 包含有如下特点:
1 )简单、安全。 C# 提供了命名空间用于管理文件,可利用 using 关键字添加命
名空间;拥有广泛的数据类型并且每个数据类型的大小是固定的;不像 C++ C 那样使
用指针,没有直接读取内存的危险操作,满足结构健康监测系统稳定监测的需求。
2 )面向对象,组件。封装、继承和多态这三个功能保证了 C# 编程语言的高速的
开发效率;大量的标准库和组件版本极大地方便了 GUI 界面的开发。
3 )支持多种类型程序。不仅可以开发 Windows 窗体 GUI 程序,同时也可以开发
Web 应用程序和手机应用程序。
4 )可在多种计算机平台编译。在 Windows Linux Mac 系统均可以使用。
5 )支持自动垃圾回收。可以节约大量系统资源。
4.1.2 文件结构
本章将上位机的所有资源、程序文件均存放在 eDAQ_Sampling_Software 工程文件
下,文件结构如图 4.2 所示。
主要程序文件的介绍如下:
1 Program.cs :上位机主程序运行入口。
2 Form_Dashboard.cs ,上位机 GUI 主界面。
3 Form_Welcome.cs UDP_Comm.cs UDP_Config.cs :数据交互模块。
4 Form_Config.cs ,数据配置模块。
5 Form_Chart.cs Channel_Parameters.cs ,数据可视化模块。
6 Form_Save.cs Form_Save_Setting.cs ,数据本地存储模块。
4.1.3 主程序入口
主程序使用了 System.Windows.Forms 命名空间,该命名空间是开发 Windows GUI
界面的基础,通过使用其包含的大量类可以方便快捷地实现丰富的用户界面功能。
Main 主函数中,首先可以利用 Application 类自带的 EnableVisualStyles
SetCompatibleTextRenderingDefault 方法完成对 GUI 界面的初始化,最后利用 Run 函数
开启 Form_Dashboar 类,即 GUI 的主界面。
4.2 主界面模块设计
通过创建 Form_Dashboard 类搭建起上位机的主界面,该类继承自 Form 类,主界面
如图 4.3 所示,包含左侧菜单栏与右侧功能栏两个部分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/122216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vite+Vue3项目全局引入scss文件

前言 Sass 是世界上最成熟、最稳定、最强大的专业级CSS扩展语言!在日常项目开发过程中使用非常广泛,今天主要讲一下 ViteVue3 项目中该如何全局引入 scss 文件,引入混合 mixin 文件的不同配置。捎带说一下 Vue2 中的引入方式做一下简单的对比…

【linux】安装rpmrebuild

rpmrebuild是一种从已经安装的包中构建RPM文件的工具。它可以用于轻松构建修改后的包,并适用于任何使用RPM的Linux发行版。 访问地址 rpm rebuild download | SourceForge.net 选择版本 版本地址:版本地址 下载安装包 安装 rpm -ivh rpmrebuild-2.15…

2023大湾区杯粤港澳金融数学建模竞赛思路+模型+代码

目录 一.思路模型见文末名片,比赛开始第一时间更新 二.大湾区杯常用算法之主成分分析法(PCA) 三.MATLAB代码 四.国赛建模思路获取见此 一.思路模型见文末名片,比赛开始第一时间更新 二.大湾区杯常用算法之主成分分析法(PCA) 主成分分析法(PCA)是一种…

人工智能轨道交通行业周刊-第64期(2023.10.16-10.29)

本期关键词:北斗应用、供电智能运维、5G-R、铁路职称、星火大模型 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通RailMetro轨道世界铁路那…

集合总结(Java)

Collection 常用方法 package com.test01;import java.util.ArrayList; import java.util.Collection; /*添加元素---boolean add(E e);移除元素---boolean remove(Object c);判断元素是否存在---boolean contains(Object c);*/ public class S {public static void main(Str…

关于多个elementui的cascader级联组件页面滚动渲染样式导致卡顿问题

如题,多个cascader级联组件,下拉选项含大量数据,滚动时会有实时样式重新渲染,导致CUP内存溢满而卡顿 小优化技巧:可加loading一次性加载完多个cascader级联组件后再允许页面滚动。 方法一:使用elementui中…

【2023.10.25练习】数据库-函数2

任务描述 本关任务:编写函数fun_2,实现指定学生的GPA计算。输入参数为学号,函数返回值为该生的GPA。 编程要求 在代码文件“step3/query1.sql”中实现函数fun_2; 在代码文件“step3/query2.sql”中实现在select命令中调用函数f…

LeetCode 917 仅仅反转字母 简单

题目 - 点击直达 1. XXXXX1. 917 仅仅反转字母 简单1. 原题链接2. 题目要求3. 基础框架 2. 解题思路1. 思路分析2. 时间复杂度3. 代码实现 1. XXXXX 1. 917 仅仅反转字母 简单 给你一个字符串 s ,根据下述规则反转字符串: 所有非英文字母保留在原有位置…

【计算机网络】认识协议

目录 一、应用层二、协议三、序列化和反序列化 一、应用层 之前的socket编程,都是在通过系统调用层面,如今我们来向上打通计算机网络。认识应用层的协议和序列化与反序列化 我们程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应…

如何快速解决d3dcompiler_43.dll缺失问题?五种方法快速解决

在计算机使用过程中,我们常常会遇到一些错误提示,其中之一就是“D3DCompiler_43.dll缺失”。这个错误通常会导致游戏、应用程序或系统无法正常运行。为了解决这个问题,我们需要采取一些修复方案来恢复缺失的文件。本文将介绍五个修复D3DCompi…

百度超级链XuperChain使用JavaSDK接入

环境 : ubuntu20 xuperchain 5.3 go 1.17 springboot : 2.5.14 前言 请提前启动好xchain的节点,我选择简单启一个xchain节点作为测试,并且使用默认端口37101 SpringBoot项目初始化 我们先进行SpringBoot项目的配置进行讲解,这里…

mongodb数据迁移的方法

这个方法只能将数据从一个mongo数据库转移到另一个mongo数据库 这个命令可以备份mongo数据(mongo数据库中的数据备份转换为文件) mongodump --host HOST --port PORT --username USERNAME --password PASSWORD --db DB -c COLLECTION --out OUT这个命令…

Flutter的The file name ‘xxxx.dart‘ isn‘t a snake_case identifier警告

文章目录 警告原因分析解决方法dart的一些命名规则变量和函数命名:类和类型命名:常量和枚举:文件命名:包命名:注释:命名一致性:避免缩写:可搜索的命名: 一些好习惯 警告 …

C++不能在子类中构造函数的初始化成员列表中直接初始化基类成员变量

在C中,派生类的构造函数可以调用基类的构造函数来初始化基类的成员变量。但是无法在派生类的构造函数的初始化列表中直接初始化基类的成员变量。 如果那样做,会报错:xx不是类xx的非静态成员或基类 例子 class StatusBase{ public:~StatusBas…

[已解决]安装的明明是pytorch-gpu,但是condalist却显示cpu版本,而且torch.cuda.is_available 也是flase

问题; 安装了gpu版本的pytorch,但是显示的torch.cuda.is_available()却是flase。 conda list查看 版本显示只有cpuonly 在网上找了半天,也没有解决办法。 仔细看了一下,发现,有个单独的包叫cpuonly,不知道…

33基于MATLAB的对RGB图像实现中值滤波,均值滤波,维纳滤波。程序已通过调试,可直接运行。

基于MATLAB的对RGB图像实现中值滤波,均值滤波,维纳滤波。程序已通过调试,可直接运行。 33 MATLAB、图像处理、维纳滤波 (xiaohongshu.com)

linux入门---多线程的控制

目录标题 线程库pthread_create如何一次性创建多个线程线程的终止线程的等待线程取消分离线程如何看待其他语言支持的多线程线程id的本质线程的局部存储线程的封装 线程库 要想控制线程就得使用原生线程库也可以将其称为pthread库,这个库是遵守posix标准的&#xf…

小美的修路(最小生成树练习)

本题链接:登录—专业IT笔试面试备考平台_牛客网 题目: 样例: 输入 3 4 1 2 3 1 1 2 2 0 1 3 1 0 2 3 3 0 输出 2 1 3 思路: 由题意,这里建造的城市需要修路,且每个城市之间可以联通,且 是 1 …

Nautilus Chain 联合香港数码港举办 BIG DEMO DAY活动,释放何信号?

在今年的 10 月 26 日 9:30-18:30 GMT8 期间,Nautilus Chain 联合香港数码港共同举办了 “BIG DEMO DAY” Web3 项目路演活动,包括Xwinner、Sleek、Tx、All weather、Coral Finance、DBOE、PARSIQ、Hookfi、Parallels、Fintestra 以及 dot.GAMING 等在内…

异步请求池——池式组件

前言 本文详细介绍异步请求池的实现过程,并使用DNS服务来测试异步请求池的性能。            两个必须牢记心中的概念: 同步:检测IO 与 读写IO 在同一个流程里异步:检测IO 与 读写IO 不在同一个流程 同步请求 与 异步请求…