# ControlCenter **Repository Path**: gitmy/control-center ## Basic Information - **Project Name**: ControlCenter - **Description**: 基于c#语言开发的工控机软件 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-09-02 - **Last Updated**: 2026-09-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ControlCenter # 项目名称 <!-- 智能无人驿站控制系统 --> --- # 版本信息 ![Version](https://img.shields.io/badge/Version-1.0.0-blue) ![.NET](https://img.shields.io/badge/.NET-8.0-green) ![Build](https://img.shields.io/badge/Build-Passing-success) ![License](https://img.shields.io/badge/License-MIT-yellow)
详细清单 | 组件/环境 | 最低版本 | 当前版本 | 备注 | | --------- | -------- | -------- | ---- | | .NET SDK | *8.0.403 | 8.0.403 | 长期支持 (LTS) | | VS | *2022 17.11.5 | 2022 17.11.5 | 开发IDE | | OS | *Win10 22H2 | Win10 22H2| 部署环境 | | PaddleOcr | 5.x | 5.x| 图像识别 |
--- # 运行时配置文件 ## 机器配置 程序启动时会在**可执行文件同级目录**读取 `machine.ini`, 若缺失则无法启动程序。 请按需创建并修改以下键值:
示例 machine.ini(点击展开) ```json { "SmallTrayWidth":170, "MiddleTrayWidth":340, "BigTrayWidth":500, "ClosestContainerNumber":5, "SmallTrayFixedLayers":[0], "MiddleTrayFixedLayers":[1], "TraysReserveLayer":0, "TempLocation":"0120000405", "ExitLocation":"010120", "CacheNumber":3, "ContainersInfo":[ { "TrayType":1, "Sticks":[468,2318], "TraysType":null, "Heights":[190,190,190,190,190,190,190] }, { "TrayType":1, "Sticks":[468,2318], "TraysType":null, "Heights":[190,190,190,190,190,190,190] }, { "TrayType":1, "Sticks":[805,2295], "TraysType":null, "Heights":[150,150,150,150,150,150,150,150,150] }, { "TrayType":1, "Sticks":[825,2315], "TraysType":null, "Heights":[75,75,150,150,150,150,150,150,150,150] }, { "TrayType":2, "Sticks":[300,2100], "TraysType":null, "Heights":[320,320,320,320,320,320] } ], "GetCourierTimeoutSeconds":1, "GetEmptyTrayTimeoutSeconds":600, "GetTempTimeoutSeconds":6000, "PickupCourierTimeoutSeconds":600, "PutEmptyTrayTimeoutSeconds":600, "PutScheduledTimeoutSeconds":600, "ReturnTrayTimeoutSeconds":6000, "SendCourierTimeoutSeconds":6000, "StoreCourierTimeoutSeconds":600, "ForkLiftWaitSeconds":0, "ForkLiftStaySeconds":0, "CacheHeights": { "Small": { "100": "800", "150": "801", "190": "802" }, "Middle": { "300": "803" }, "Big": { "500": "804" } } } ``` 字段说明: | 字段 | 类型 | 描述 | | ---- | ---- | ---- | | `SmallTrayWidth` | ushort | 小托盘宽度(单位:mm) | | `MiddleTrayWidth` | ushort | 中托盘宽度(单位:mm) | | `BigTrayWidth` | ushort | 大托盘宽度(单位:mm) | | `ClosestContainerNumber` | ushort | 升降机旁靠近出口的货架号 | | `SmallTrayFixedLayers` | ushort[] | 小托盘固定位置托盘层号 | | `MiddleTrayFixedLayers` | ushort[] | 中托盘固定位置托盘层号 | | `TraysReserveLayer` | ushort | 已抛弃,可忽略 | | `TempLocation` | string | 出料口暂存托盘坐标,已抛弃,可忽略 | | `ExitLocation` | string | 出料口坐标,用于计算距离和时间 | | `CacheNumber` | ushort | 叉车缓存位个数 | | `ContainersInfo` | ContainerDO[] | 货架参数配置 | | `TrayType` | int | 托盘类型,设置该货架默认可放置托盘类型 | | `Sticks` | int[] | 立柱坐标,每个立柱只录入尾部坐标 | | `TraysType` | int[] | 仅大货架生效且TrayType=3时必须包含此项,用于定制大货架每层的托盘类型 | | `Heights` | int[] | 每一个层可放置的快递高度 | | `GetCourierTimeoutSeconds` | ushort | (可选)接快递任务超时时间,默认120,单位:秒 | | `GetEmptyTrayTimeoutSeconds` | ushort | (可选)取空托盘任务超时时间,默认60,单位:秒 | | `GetTempTimeoutSeconds` | ushort | (可选)取暂存位托盘任务超时时间,默认60,单位:秒 | | `PickupCourierTimeoutSeconds` | ushort | (可选)取快递取托盘任务超时时间,默认60,单位:秒 | | `PutEmptyTrayTimeoutSeconds` | ushort | (可选)放空托盘至固定位置任务超时时间,默认60,单位:秒 | | `PutScheduledTimeoutSeconds` | ushort | (可选)存预约快递任务超时时间,默认60,单位:秒 | | `ReturnTrayTimeoutSeconds` | ushort | (可选)返还空托盘任务超时时间,默认60,单位:秒 | | `SendCourierTimeoutSeconds` | ushort | (可选)出库任务超时时间,默认60,单位:秒 | | `StoreCourierTimeoutSeconds` | ushort | (可选)存快递任务超时时间,默认60,单位:秒 | | `ForkLiftWaitSeconds` | ushort | (可选)叉车等待旋转台推至升降机时间,默认3,单位:秒 | | `ForkLiftWaitSeconds` | ushort | (可选)叉车等待升降机完成是否能存件判断,默认30,单位:秒 | | `CacheHeights` | CacheHeights | 预约口高度信息的Plc寄存器地址 | | `Small` | Dictionary | 小快递 | | `Middle` | Dictionary | 中快递 | | `Big` | Dictionary | 大快递 |
## 软件配置 程序启动时会在**可执行文件同级目录**读取 `config.json`, 若缺失程序会自动创建, 请按需创建并修改以下键值:
示例 config.json(点击展开) ```json { "TcpDevice": { "Ip": "192.168.4.1", "Port": 3001 }, "ModbusTcpDevice": { "Ip": "127.0.0.1", "Port": 502 }, "BatchNumber": "75", "PickupCode": "0027", "DeliveryUserId": "63", "Pending": "{}", "Scheduled": "{}", "Pickup": "{}" } ``` 字段说明: | 字段 | 类型 | 描述 | | ---- | ---- | ---- | | `TcpDevice` | TcpConfig | Tcp通信配置 | | `ModbusTcpDevice` | ModbusTcpConfig | ModbusTcp通信配置 | | `Ip` | string | IP地址 | | `Port` | ushort | 端口号 | | `BatchNumber` | long | 批次号,用于存件 | | `PickupCode` | int | 取件码,用于存件 | | `DeliveryUserId` | string | 快递用户id | | `Pending` | Dictionary> | 待寄件正在处理的数据,用于数据恢复 | | `Scheduled` | Dictionary | 预约存件正在处理的数据,用于数据恢复 | | `Pickup` | Dictionary | 取件正在处理的数据,用于数据恢复 |
# OCR 模型说明(PaddleOCR v5) 本项目使用 **PaddleOCR v5 模型(检测 det + 识别 rec)** 进行图像文字识别。 由于 PaddleOCR 模型体积较大(超过 100MB),Gitee 对 Release 单文件大小有限制,因此本仓库采用 **分卷压缩** 的方式提供模型及相关配置文件。 --- ## 模型下载方式一:从 Release 下载(推荐) 请前往本仓库的 **Release 页面** 下载 OCR 模型压缩包: **Release 下载地址:** https://gitee.com/xv-xin/control-center/releases/tag/v1.0.0 Release 中包含若干分卷压缩文件: Resource.zip Resource.z01 ### 📁 放置目录 将 `paddleocr` 文件夹整体移动到: - 开发模式: `bin/Debug/net8.0-windows/` - 发布模式: `bin/Release/net8.0-windows/` 最终路径示例:

```
net8.0-windows/
├─ paddleocr/
│  ├─ det/
│  └─ rec/
└─ config.json
└─ machine.ini
```
## 📦 模型下载方式二:自行从 PaddleOCR 官方下载(可选) 如果你不希望使用 Release 附带的压缩包,也可以 **自行下载 PaddleOCR v5 模型**。 官方文档: 👉 https://www.paddleocr.ai/main/version3.x/pipeline_usage/OCR.html#5 --- # 目录总览 --- ## 核心层(Core) ### Enums(通用枚举) - **AccessTaskTypeEnum.cs** - **ExpressTypeEnum.cs** - **PlcCommandEnum.cs** - **QrCodeFunEnum.cs** - **WsMsgTypeEnum.cs** ### FrameWork(公共框架) - **Error/** - **BaseErrorCode.cs** - **IErrorCode.cs** - **Exceptions/** - **AbstractException.cs** - **LocalException.cs** - **ServerException.cs** - **GlobalExceptionHandler.cs** - **SystemContext.cs** - **VersionManger.cs** ### Models(业务模型) #### AccessCourier(存取任务实体) - **AccessTask.cs** - **GerCourierTask.cs** - **GetEmptyTrayTask.cs** - **GetTempTask.cs** - **PickBigTask.cs** - **PickupCourierTask.cs** - **PutEmptyTrayTask.cs** - **PutScheduledTask.cs** - **ReturnCourierTask.cs** - **ReturnScheduleCourierTask.cs** - **ReturnTrayTask.cs** - **SendCourierTask.cs** - **StoreBigTask.cs** - **StoreCourierTask.cs** #### QrCode(二维码) - **IQrCodePayload.cs** - **PUItem.cs** - **PickUpQrCode.cs** - **StoreCourierQrCode.cs** #### Upload(上传记录任务) - **CourierOutboundUploadTask.cs** - **PendingEndUploadTask.cs** - **ReplenishRecordUploadTask.cs** - **ScheduledPickupUpdateUploadTask.cs** - **UploadTask.cs** - **UploadTaskFactory.cs** - **PendingDeliveryDO.cs** - **PrintImageDO.cs** - **RecordDO.cs** - **StationDO.cs** - **TransMessage.cs** --- ## 数据层(Data) ### Repositories - **RecordRepository.cs** - **SpaceRepository.cs** - **LogDO.cs** - **MachineDO.cs** - **ScheduledDO.cs** - **SpaceDO.cs** - **SpaceFactory.cs** --- ## 设备层(Devices) - **DeliPrinter.cs** - **ForkLift.cs** - **ModbusTcpPlc.cs** - **Phone.cs** - **Scanner.cs** - **TcpPlc.cs** --- ## 传输对象(DTOs) - **BaseDTO.cs** - **CreateNormalDTO.cs** - **GridAddressDTO.cs** - **PLCServiceSnapshotDTO.cs** - **PendingInboundDTO.cs** - **ReadResultDTO.cs** - **RecordServiceSnapshotDTO.cs** - **ReplenishDTO.cs** - **ResponseDTO.cs** - **UpdateNormalDTO.cs** - **UpdateStatusDTO.cs** --- ## 服务层(Services) ### Dispatcher(消息/命令分发) - **handler/** - **PlcHandler** - **QrCodeHandler** - **MessageDispatcher.cs** - **QrCodeDispatcher.cs** - **BaseService.cs** - **BroadcastService.cs** - **MainFormService.cs** - **PLCService.cs** - **PhonsService.cs** - **PrintService.cs** - **RecordService.cs** - **ScannerService.cs** - **StationService.cs** - **StorageService.cs** - **WebsocketService.cs** --- ## 工具层(Utils) ### Constant(常量定义) - **LogDesConstant.cs** - **SystemConstant.cs** - **TopicConstant.cs** - **WSCodeConstant.cs** - **ExtensionsUtil.cs** - **HttpUtil.cs** - **IdGenerator.cs** - **ImageUtil.cs** - **SystemUtil.cs** --- ## 视图层(Views) ### UserControls - **MainForm/** - **HistoryRecord.cs** - **StorageManagement.cs** - **SystemLog.cs** - **TestPage.cs** - **SM/** - **ContainerPanel.cs** - **InsertSpace.cs** - **SpacePanel.cs** - **SpaceSetting.cs** - **MainForm.cs** - **SettingsComponent.cs**