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 项)暂未处理,留待单独任务。
This commit is contained in:
@@ -1,22 +1,38 @@
|
||||
# StandardScene
|
||||
|
||||
`StandardScene` 是一个基于 `.NET Framework 4.8` 的场景插件库,运行时由 `SimpleComposer.exe` 作为宿主加载。项目面向 AGV/AMR 场内调度与联动控制,覆盖搬运任务、环线任务、区域交通管制、充电管理、门禁联动,以及 HTTP / MQTT / Modbus 等对外通信能力。
|
||||
`StandardScene` 是一个基于 `.NET 8`(`net8.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`:单文件文档门户,双击即可在浏览器中打开
|
||||
- `DEVELOPMENT_GUIDE.md`:面向整个仓库的开发指南
|
||||
- `QUICK_REFERENCE.md`:高频开发速查表
|
||||
- `INDEX.md`:阅读顺序与导航说明
|
||||
- `Doc/ARCHITECTURE.md`:整体代码架构文档(模块地图、插件机制、扩展点、接手清单)
|
||||
- `Doc/DEVELOPMENT_GUIDE.md`:面向整个仓库的开发指南
|
||||
- `Doc/QUICK_REFERENCE.md`:高频开发速查表
|
||||
- `Doc/INDEX.md`:阅读顺序与导航说明
|
||||
|
||||
## 项目定位
|
||||
|
||||
- 工程类型:类库插件,不是独立 EXE
|
||||
- 宿主程序:`SimpleComposer.exe`
|
||||
- 目标框架:`.NET Framework 4.8`
|
||||
- 工程类型:类库插件(基座 + 4 个卫星,共 5 个 DLL),不是独立 EXE
|
||||
- 宿主程序:`SimpleLite.exe`(CycleGUI 应用)
|
||||
- 目标框架:`net8.0-windows`
|
||||
- 主要语言:`C#`
|
||||
- 界面技术:逐步从 WinForms 迁移到 CycleGUI(宿主同栈);`DeliveryViewer`(任务列表)已迁移
|
||||
- 典型场景:仓储搬运、区域流控、充电协同、门控联动、车辆协议接入
|
||||
|
||||
## 插件构成
|
||||
|
||||
| 插件 DLL | 场景 id | 职责 |
|
||||
| --- | --- | --- |
|
||||
| `StandardScene.dll`(Core,基座) | —(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` 选择性加载。
|
||||
|
||||
## 顶层模块
|
||||
|
||||
| 目录 | 作用 |
|
||||
@@ -33,15 +49,19 @@
|
||||
|
||||
## 构建与运行
|
||||
|
||||
1. 使用 Visual Studio 打开 `StandardScene.sln`
|
||||
2. 确认本机依赖路径存在:
|
||||
- `D:\MDCS\Dependencies\Commons\CommonUsage.dll`
|
||||
- `D:\MDCS\Dependencies\deps\LessokajiWeaverUtilities.dll`
|
||||
- `D:\MDCS\Dependencies\Simple\RefSimpleCore.dll`
|
||||
- `D:\MDCS\Executables\Simple\SimpleComposer.exe`
|
||||
3. 编译 `Debug|Any CPU` 或 `Release|Any CPU`
|
||||
4. 编译后 `PostBuildEvent` 会将 `StandardScene.dll` 复制到 `build\plugins\`
|
||||
5. 运行 `build\SimpleComposer.exe`,由宿主加载插件
|
||||
> 重要: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. 确认本机依赖路径存在(见各 `.csproj` 的 `HintPath`):
|
||||
- `D:\MDCS\Dependencies\Commons\CommonUsage.dll`、`MDCSToolBox.dll`、`CycleGUI.dll`
|
||||
- `Simple\SimpleLite\bin\Debug\SimpleLite.dll`、`LessokajiWeaverUtilities.dll`
|
||||
- `Simple\SimpleCore\bin\Debug\netstandard2.0\SimpleCore.dll`
|
||||
3. 使用 Visual Studio 打开 `StandardScene.sln`,或执行 `dotnet build StandardScene.sln`
|
||||
4. 编译 `Debug|x64` 或 `Release|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` 选择性加载插件
|
||||
|
||||
## 开发阅读顺序
|
||||
|
||||
|
||||
Reference in New Issue
Block a user