Files
XplorePlane/README.md
T
2026-03-13 17:17:47 +08:00

4.4 KiB
Raw Blame History

XplorePlane 平面CT软件

系统目标

XplorePlane 系统用于控制平面 CT 设备的各个子系统(射线源、探测器、运动控制)并完成采集图像的处理与分析,为研发与调试提供统一的软件平台。

总体架构风格

  • 客户端框架: WPF + Prism MVVM(项目 XplorePlane,目标框架 net8.0-windows
  • 图像处理内核: 独立类库 ImageProcessing.Core(算子基类与参数模型)和 ImageProcessing.Processors(具体算子实现),基于 EmguCV
  • 基础设施: 日志使用 Serilog,序列化使用 Newtonsoft.Json,资源统一通过 WPF 资源系统管理

开发目标

在现有图像处理与 UI 基础上,引入并集成:

  • 射线源子系统(X-Ray Source
  • 探测器子系统(Detector
  • 运动控制子系统(Motion Control
  • 通过统一的 CT 扫描工作流,在 UI 中实现一键式扫描、实时状态监控与图像后处理

项目框架

XplorePlane/
├── XplorePlane.csproj           # .NET 8 WPF project file

├── App.xaml                       # Application + global ResourceDictionary
├── App.xaml.cs

├── Views/
   └── MainWindow.xaml            # Main window (Grid + StackPanel layout)
   └── MainWindow.xaml.cs         # Code-behind (minimal  only TreeView event)

├── ViewModels/
   └── MainViewModel.cs           # Root VM: navigation, callouts, props, commands
   └── NavGroupNode.cs            # Tree group node VM
   └── NavLeafNode.cs             # Tree leaf node VM
   └── InspectionCalloutVM.cs     # Overlay callout card VM
   └── CalloutRowVM.cs            # Single callout data row VM
   └── RelayCommand.cs            # ICommand implementation

├── Models/
   └── FeatureProperties.cs       # Bindable domain model for right panel

└── Assets/
    └── Icons/                     # 28×28 toolbar icon PNGs
      

XplorePlane.Hardware(硬件库)

XplorePlane.ImageProcessing (图像库)

日志系统

项目通过引用 XplorePlane.Common.dll 库使用统一的日志功能,无需在本项目中重复实现。

  • 日志框架: Serilog 4.3.1(来自 XplorePlane.Common.dll
  • 日志输出: 控制台、文件(按天滚动)、调试输出
  • 日志路径: logs/xploreplane-YYYYMMDD.log
  • 配置文件: App.config
  • 服务接口: XplorePlane.Common.Logging.Interfaces.ILoggerService

使用方式 1 - 使用 Serilog ILogger(推荐):

using Serilog;

public class MyViewModel
{
    private readonly ILogger _logger;

    public MyViewModel(ILogger logger)
    {
        _logger = logger.ForContext<MyViewModel>();
    }

    public void DoSomething()
    {
        _logger.Information("执行操作");
        _logger.Debug("调试信息:参数={Value}", someValue);
    }
}

使用方式 2 - 使用 XplorePlane.Common.ILoggerService:

using XplorePlane.Common.Logging.Interfaces;

public class MyService
{
    private readonly ILoggerService _logger;

    public MyService(ILoggerService logger)
    {
        _logger = logger.ForModule<MyService>();
    }

    public void DoWork()
    {
        _logger.Info("开始工作");
        _logger.Debug("调试信息:参数={Value}", someValue);
    }
}

详细使用指南请参考:

TO-DO List

  • 软件基于 WPF + Prism 基础的框架
  • 日志库的引用(通过 XplorePlane.Common.dll
  • 按推荐的 DLL 目录结构进行修改
  • 通过库依赖的方式调用日志功能
  • 界面的布局
  • 打通与硬件层的调用流程
  • 打通与图像层的调用流程

文档