经过之前的反复沟通,终于出来了一个能运行的程序:

接下来我拿北京中泰联创科技有限公司的数据采集卡EM9316作为实际设备开始调试,在调试前,我先让Qoder生成一个项目总结,主要是为了初步查看自动生成的代码是否符合我的预期,然后我按照他总结的步骤搭建运行环境。
下面是Qoder生成内容:
1. 项目概述
CSTest2是一个基于C# .NET 8.0和Avalonia UI框架开发的数据采集演示程序,主要用于与工业采集卡设备进行通信,实现AD(模数转换)数据的实时采集和波形显示功能。该程序提供了设备连接、数据采集、波形可视化等核心功能。
2. 项目目录结构
CSTest2/
├── App.axaml # Avalonia应用程序资源字典定义
├── App.axaml.cs # Avalonia应用程序主类,负责初始化和窗口创建
├── CSTest2.csproj # 项目配置文件,定义依赖项和编译选项
├── MainWindow.axaml # 主窗口界面定义(XAML)
├── MainWindow.axaml.cs # 主窗口逻辑代码,包含设备控制和数据采集功能
├── Program.cs # 程序入口点,包含Main函数和Avalonia初始化
├── app.manifest # 应用程序清单文件
├── bin/ # 编译输出目录
├── obj/ # 编译中间文件目录
└── PROJECT_SUMMARY.md # 项目总结文档
3. 核心文件详解
3.1 Program.cs - 程序入口点
- 包含Main函数,是整个应用程序的入口
- 负责初始化Avalonia UI框架
- 包含异常处理机制,将错误信息记录到error.log文件
3.2 App.axaml/App.axaml.cs - 应用程序主类
- App.axaml定义应用程序级别的资源和样式
- App.axaml.cs包含应用程序生命周期管理
- 负责创建和初始化主窗口
3.3 MainWindow.axaml/MainWindow.axaml.cs - 主窗口
- MainWindow.axaml定义主窗口的用户界面布局
- MainWindow.axaml.cs包含所有业务逻辑:
- 设备连接/断开功能
- AD数据采集控制
- 实时数据显示和波形绘制
- 异常处理和资源管理
3.4 CSTest2.csproj - 项目配置文件
- 定义项目的基本属性(目标框架、输出类型等)
- 管理NuGet包依赖(Avalonia、MsBox.Avalonia等)
- 配置对ztdaq.cs和ZT_Type.cs的引用
- 设置输出路径和条件编译符号
4. Windows运行环境搭建
4.1 系统要求
- Windows 7 SP1或更高版本操作系统
- .NET 8.0运行时环境
- Visual Studio 2022或更高版本(开发环境)
4.2 依赖组件
- Avalonia UI框架(版本11.3.8)
- MsBox.Avalonia消息框组件
- ztdaq.dll设备通信动态链接库
4.3 环境配置步骤
- 安装.NET 8.0 SDK
- 安装Visual Studio 2022(可选,用于开发)
- 将ztdaq.dll文件放置在Debug目录下
- 确保目标设备驱动已正确安装
5. Linux运行环境搭建
5.1 系统要求
- Ubuntu 18.04或更高版本
- Mono运行时环境或.NET 8.0运行时
- GTK+ 3.0开发包
5.2 依赖组件
- Avalonia UI框架(版本11.3.8)
- libgtk-3-dev
- libc6-dev
5.3 环境配置步骤
-
安装.NET 8.0运行时:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb sudo apt-get update sudo apt-get install -y dotnet-sdk-8.0 -
安装GTK+依赖:
sudo apt-get install -y libgtk-3-dev -
编译项目并运行
6. 项目运行方法
6.1 编译运行
- 使用Visual Studio打开解决方案文件
- 设置CSTest2为启动项目
- 按F5键编译并运行程序
6.2 命令行运行
cd CS_Demo\CSTest2
dotnet run
6.3 直接执行
编译后的程序可执行文件位于Debug目录下,可直接双击运行CSTest2.exe
7. 编程知识点
7.1 核心技术栈
- C# .NET 8.0: 项目基于最新的.NET框架开发
- Avalonia UI: 跨平台UI框架,用于构建图形界面
- P/Invoke: 通过平台调用服务与原生DLL进行交互
- 异步编程: 使用async/await模式处理数据采集任务
7.2 关键实现细节
7.2.1 设备通信
- 通过ztdaq.cs封装的P/Invoke接口与硬件设备通信
- 使用IntPtr句柄管理设备连接状态
- 支持多种设备类型(PCIE8116、EM9403等)
7.2.2 数据采集
- 实现定时数据采集任务(Task.Run)
- 使用CancellationToken管理任务取消
- 通过Dispatcher.UIThread更新UI线程数据
7.2.3 波形显示
- 使用Avalonia Canvas控件绘制波形
- 实现8通道数据的彩色波形显示
- 支持网格背景和多通道颜色区分
7.2.4 异常处理
- 全面的try/catch异常捕获机制
- 错误日志记录到error.log文件
- 用户友好的错误提示信息
7.3 架构设计特点
- MVVM模式: 使用Avalonia的MVVM架构分离UI与业务逻辑
- 资源管理: 窗口关闭时自动释放设备资源
- 跨平台兼容: 通过条件编译支持Windows和Linux平台
- 配置化设计: 设备信息通过常量配置,易于修改
7.4 关键类和方法
- MainWindow类: 主窗口逻辑,包含所有UI交互和设备控制
- ZTDaq类: 封装了所有与硬件设备通信的P/Invoke方法
- DataAcquisitionTask方法: 核心数据采集任务实现
- DrawWaveform方法: 波形绘制实现
该程序充分展示了现代C#应用程序开发的最佳实践,结合了跨平台UI框架、异步编程、硬件通信等多个关键技术领域。