将 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 项)暂未处理,留待单独任务。
4.8 KiB
4.8 KiB
StandardScene
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:单文件文档门户,双击即可在浏览器中打开Doc/ARCHITECTURE.md:整体代码架构文档(模块地图、插件机制、扩展点、接手清单)Doc/DEVELOPMENT_GUIDE.md:面向整个仓库的开发指南Doc/QUICK_REFERENCE.md:高频开发速查表Doc/INDEX.md:阅读顺序与导航说明
项目定位
- 工程类型:类库插件(基座 + 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 选择性加载。
顶层模块
| 目录 | 作用 |
|---|---|
CarTypes |
各车型与协议适配,如叉车、Kiva、VDA5050、多车联动 |
Chained |
链式搬运与环线任务主流程 |
Charge |
充电策略、充电桩管理、状态监控 |
ChargeStationType |
充电桩类型实现 |
InterLock |
区域互锁与交通控制 |
Scheduler |
场景级辅助任务,如心跳、区域流控、安全信号 |
ExtendDevice/Door |
门控设备接入与联动 |
Model |
任务、配置、地图等数据模型 |
TCP / Utils |
TCP、JSON、WebAPI、Modbus 等基础工具 |
构建与运行
重要:StandardScene 通过
HintPath引用宿主产物,必须先构建 Simple 解决方案,否则会出现SimpleCore版本不匹配等编译错误。
- 先构建宿主依赖:
dotnet build Simple\SimpleLite\SimpleLite.csproj(会一并构建SimpleCore项目),产出:Simple\SimpleLite\bin\Debug\SimpleLite.dllSimple\SimpleCore\bin\Debug\netstandard2.0\SimpleCore.dll
- 确认本机依赖路径存在(见各
.csproj的HintPath):D:\MDCS\Dependencies\Commons\CommonUsage.dll、MDCSToolBox.dll、CycleGUI.dllSimple\SimpleLite\bin\Debug\SimpleLite.dll、LessokajiWeaverUtilities.dllSimple\SimpleCore\bin\Debug\netstandard2.0\SimpleCore.dll
- 使用 Visual Studio 打开
StandardScene.sln,或执行dotnet build StandardScene.sln - 编译
Debug|x64或Release|x64 - 编译后
Directory.Build.targets会自动将 5 个插件 DLL(+ PDB +*.scene.json+ Devices 的leegKeys-sdk.dll)复制到build\plugins\ - 将
build\plugins\内容部署到SimpleLite.exe进程工作目录下的plugins\,运行SimpleLite.exe,由宿主按active-scenes.json选择性加载插件
开发阅读顺序
- 先看
DocumentHub.html,快速建立全局认知 - 再看
DEVELOPMENT_GUIDE.md,熟悉架构、流程与配置 - 开发时配合
QUICK_REFERENCE.md快速查常用入口 - 新增功能前,先对照
Scheduler\HeartBeatMission.cs或Scheduler\RegionalTrafficControlMission.cs
推荐起步文件
Scheduler\HeartBeatMission.cs:最小 Mission 结构参考Scheduler\RegionalTrafficControlMission.cs:事件订阅型 Mission 参考Chained\TransportMission.cs:搬运任务主流程Charge\StandardChargeMission.cs:充电任务骨架WebApi.cs:HTTP 接口入口
本地打开 HTML 文档
直接双击 DocumentHub.html 即可,无需部署。页面已使用 UTF-8 编码,并对中文、English 和 emoji 做了兼容字体设置。