Files
StandardSence/README.md
T
zhaowei.huang a0dc1e6cd0 refactor: 插件 UI 从 WinForms 迁移到 CycleGUI,并修复代码质量问题
将 StandardScene 各插件的配置/监控窗体从 WinForms 迁移到 CycleGUI(删除 .Designer.cs/.resx,重写为 PanelBuilder 立即模式 UI,新增 CycleUiHelper 统一对话框)。

同时修复代码审核中的问题:
- 后台文件写入加锁 + try/catch(ButtonBoxManager / DoorManager,对齐 LoopViewer.SaveTasks 模式)
- CoderFieldsMetadata.cs 启用 #nullable enable,消除 CS8632 警告
- DummyCar 移除已废弃的 rightClickAction()/SetPosition()
- CarRemoteHelper.OpenVehicleWebPage 的 Process.Start 加 try/catch
- 重命名名不副实的 Mstsc()(现为打开网页)
- 统一弃元命名为 _
- TrafficInterlockViewer 改用稳定 Id(GUID)做选择/编辑,替代行索引
- csproj 改用 $(CGUILibDir) 解析 CycleGUI,绝对路径收敛到 Directory.Build.props

构建:dotnet build StandardScene.sln → 0 错误,30 警告(均为历史遗留)。
注:static 单例状态重构(审核第 8 项)暂未处理,留待单独任务。
2026-06-26 15:00:53 +08:00

4.8 KiB
Raw Blame History

StandardScene

StandardScene 是一个基于 .NET 8net8.0-windows)的场景插件库,运行时由 SimpleLite.exe 作为宿主加载。项目面向 AGV/AMR 场内调度与联动控制,覆盖搬运任务、环线任务、区域交通管制、充电管理、门禁联动,以及 HTTP / MQTT / Modbus 等对外通信能力。

历史说明:早期版本基于 .NET Framework 4.8 并由 SimpleComposer.exe 加载;现已迁移到 net8.0-windows + SimpleLite.exe 宿主,并拆分为「基座 + 4 个卫星」共 5 个插件 DLL。界面正逐步从 WinForms 迁移到 CycleGUI(与宿主同栈),任务列表 DeliveryViewer 已完成迁移。

文档入口

  • DocumentHub.html:单文件文档门户,双击即可在浏览器中打开
  • Doc/ARCHITECTURE.md:整体代码架构文档(模块地图、插件机制、扩展点、接手清单)
  • Doc/DEVELOPMENT_GUIDE.md:面向整个仓库的开发指南
  • Doc/QUICK_REFERENCE.md:高频开发速查表
  • Doc/INDEX.md:阅读顺序与导航说明

项目定位

  • 工程类型:类库插件(基座 + 4 个卫星,共 5 个 DLL),不是独立 EXE
  • 宿主程序:SimpleLite.exeCycleGUI 应用)
  • 目标框架:net8.0-windows
  • 主要语言:C#
  • 界面技术:逐步从 WinForms 迁移到 CycleGUI(宿主同栈);DeliveryViewer(任务列表)已迁移
  • 典型场景:仓储搬运、区域流控、充电协同、门控联动、车辆协议接入

插件构成

插件 DLL 场景 id 职责
StandardScene.dllCore,基座) —(alwaysLoad 任务调度、交通互锁、充电编排、门禁/按钮盒、HTTP API、数据模型、抽象契约
StandardScene.Magnetic.dll scene.mag 磁导航平台车型与磁循迹 Coder
StandardScene.QrLidar.dll scene.qrlidar 激光 SLAM + 二维码导航,多种车型
StandardScene.Devices.dll scene.device 具体硬件驱动(Modbus 门控、充电桩、按钮盒)
StandardScene.Protocol.VDA5050.dll scene.vda5050 VDA5050(MQTT)标准协议栈与标准车型

卫星插件依赖基座(星型,单向,无循环引用);各卫星附带 <dll>.scene.json 清单,由宿主按 active-scenes.json 选择性加载。

顶层模块

目录 作用
CarTypes 各车型与协议适配,如叉车、Kiva、VDA5050、多车联动
Chained 链式搬运与环线任务主流程
Charge 充电策略、充电桩管理、状态监控
ChargeStationType 充电桩类型实现
InterLock 区域互锁与交通控制
Scheduler 场景级辅助任务,如心跳、区域流控、安全信号
ExtendDevice/Door 门控设备接入与联动
Model 任务、配置、地图等数据模型
TCP / Utils TCP、JSON、WebAPI、Modbus 等基础工具

构建与运行

重要:StandardScene 通过 HintPath 引用宿主产物,必须先构建 Simple 解决方案,否则会出现 SimpleCore 版本不匹配等编译错误。

  1. 先构建宿主依赖:dotnet build Simple\SimpleLite\SimpleLite.csproj(会一并构建 SimpleCore 项目),产出:
    • Simple\SimpleLite\bin\Debug\SimpleLite.dll
    • Simple\SimpleCore\bin\Debug\netstandard2.0\SimpleCore.dll
  2. 确认本机依赖路径存在(见各 .csprojHintPath):
    • D:\MDCS\Dependencies\Commons\CommonUsage.dllMDCSToolBox.dllCycleGUI.dll
    • Simple\SimpleLite\bin\Debug\SimpleLite.dllLessokajiWeaverUtilities.dll
    • Simple\SimpleCore\bin\Debug\netstandard2.0\SimpleCore.dll
  3. 使用 Visual Studio 打开 StandardScene.sln,或执行 dotnet build StandardScene.sln
  4. 编译 Debug|x64Release|x64
  5. 编译后 Directory.Build.targets 会自动将 5 个插件 DLL+ PDB + *.scene.json + Devices 的 leegKeys-sdk.dll)复制到 build\plugins\
  6. build\plugins\ 内容部署到 SimpleLite.exe 进程工作目录下的 plugins\,运行 SimpleLite.exe,由宿主按 active-scenes.json 选择性加载插件

开发阅读顺序

  1. 先看 DocumentHub.html,快速建立全局认知
  2. 再看 DEVELOPMENT_GUIDE.md,熟悉架构、流程与配置
  3. 开发时配合 QUICK_REFERENCE.md 快速查常用入口
  4. 新增功能前,先对照 Scheduler\HeartBeatMission.csScheduler\RegionalTrafficControlMission.cs

推荐起步文件

  • Scheduler\HeartBeatMission.cs:最小 Mission 结构参考
  • Scheduler\RegionalTrafficControlMission.cs:事件订阅型 Mission 参考
  • Chained\TransportMission.cs:搬运任务主流程
  • Charge\StandardChargeMission.cs:充电任务骨架
  • WebApi.csHTTP 接口入口

本地打开 HTML 文档

直接双击 DocumentHub.html 即可,无需部署。页面已使用 UTF-8 编码,并对中文、English 和 emoji 做了兼容字体设置。