# ComTools **Repository Path**: liang-cao/com-tools ## Basic Information - **Project Name**: ComTools - **Description**: 组件工具 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-24 - **Last Updated**: 2026-07-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SignalR 通信工具集 一个基于 SignalR 的设备通信工具集,包含业务接口客户端库和演示应用程序。 ## 项目概述 本项目提供了一套完整的 SignalR 通信解决方案,用于设备与服务器之间的实时通信。主要包含两个核心组件: - **SignalR.Client** - 业务接口客户端库 - **Demo** - WPF 演示应用程序 ## 项目结构 ``` com-tools/ ├── SignalR.Client/ # 核心通信库 │ ├── BusinessApiClient.cs # 业务接口客户端 │ ├── SignalRClient.cs # 基础SignalR客户端 │ ├── Services/ │ │ └── SignalRService.cs # SignalR服务封装 │ ├── Models/ │ │ ├── MessageModel.cs # 消息数据模型 │ │ ├── ResponseModels.cs # 响应数据模型 │ │ └── Enums.cs # 枚举定义 │ └── Extensions/ │ └── EnumExtensions.cs # 枚举扩展方法 ├── Demo/ # WPF演示程序 │ ├── MainWindow.xaml # 主界面 │ ├── ViewModels/ │ │ └── MainViewModel.cs # 主视图模型 │ ├── Converters/ │ │ └── String2BrushConverter.cs # 字符串到画刷转换器 │ └── App.xaml # 应用程序资源 └── Doc/ └── 接口清单.md # 接口文档 ``` ## 功能特性 ### SignalR.Client 库 #### 🔌 连接管理 - 自动连接/断开连接 - 连接状态监控 - 自动重连机制 #### 📡 消息通信 - 双向消息传输 - JSON格式数据序列化 - 消息ID追踪 - 响应超时处理 #### 🎯 业务接口支持 支持 11 个完整的业务接口: 1. **登录接口** (`LoginRequest`) - 用户身份验证 2. **设备状态接口** (`EquipmentStatus`) - 设备运行状态上报 3. **AGV状态接口** (`EquipmentAgvStatus`) - AGV设备状态上报 4. **实验流程接口** (`DistributeExperiments`) - 实验流程分发 5. **过程数据接口** (`ProcessData`) - 实时过程数据上报 6. **警告数据接口** (`WarnningInfo`) - 警告信息上报 7. **结果数据接口** (`EquipmentEnd`) - 实验结果数据上报 8. **物料呼叫接口** (`MaterialCall`) - 物料需求请求 9. **日志上报接口** (`Loginfo`) - 系统日志上报 10. **送检请求接口** (`InspectionRequest`) - 样品送检请求 11. **物料架信息接口** (`ShelfInfo`) - 物料架状态信息 ### Demo 演示程序 #### 🎨 现代化UI - 基于 HandyControl 控件库 - MVVM 架构设计 - 响应式布局 - 美观的卡片式界面 #### 🛠 完整功能演示 - **连接管理**: 可视化连接状态,支持自定义服务器地址 - **用户登录**: 完整的登录流程演示 - **接口调用**: 所有11个业务接口的调用演示 - **实时日志**: 发送/接收消息的实时显示 - **响应展示**: 格式化的接口响应数据显示 #### 📊 调试功能 - JSON格式的消息日志 - 接口响应数据展示 - 连接状态实时监控 - 错误信息详细显示 ## 技术栈 ### 核心框架 - **.NET 8.0** - 目标框架 - **WPF** - 桌面应用程序框架 - **SignalR Client** - 实时通信 ### UI组件 - **HandyControl** - 现代化UI控件库 - **CommunityToolkit.Mvvm** - MVVM框架 ### 数据处理 - **Newtonsoft.Json** - JSON序列化 ## 快速开始 ### 环境要求 - .NET 8.0 SDK - Visual Studio 2022 或 Visual Studio Code ### 编译运行 1. **克隆项目** ```bash git clone cd com-tools ``` 2. **还原依赖** ```bash dotnet restore ``` 3. **编译项目** ```bash dotnet build ``` 4. **运行演示程序** ```bash cd Demo dotnet run ``` ### 使用演示程序 1. **配置连接** - 输入SignalR服务器地址(默认:`http://192.168.0.42:9991/hub`) - 设置设备编号(默认:`DEV-PMP`) - 点击"连接"按钮 2. **用户登录** - 输入用户名(默认:`admin`) - 输入密码(默认:`@dmin@wskj2025`) - 点击"登录"按钮 3. **测试接口** - 连接并登录成功后,可以测试各种业务接口 - 每个接口都会显示发送的JSON数据和服务器响应 - 查看消息日志了解详细的通信过程 ## 开发指南 ### 集成 SignalR.Client 库 1. **添加项目引用** ```xml ``` 2. **基本使用示例** ```csharp // 创建客户端实例 var client = new BusinessApiClient(); client.DeviceCode = "YOUR_DEVICE_CODE"; // 订阅事件 client.ConnectionStateChanged += (connected) => { Console.WriteLine($"连接状态: {connected}"); }; client.MessageReceived += (user, message) => { Console.WriteLine($"收到消息: {message}"); }; // 连接服务器 await client.ConnectAsync("http://your-server:port/hub"); // 登录 var loginResult = await client.SendLoginAsync("username", "password"); if (loginResult.Success) { Console.WriteLine("登录成功"); } // 发送设备状态 var response = await client.SendDeviceStatusAsync( WorkMode.ONLINE, DeviceStatus.BUSY, waitForResponse: true ); ``` ### 自定义接口 如需添加新的业务接口: 1. 在 `Models/MessageModel.cs` 中定义数据模型 2. 在 `BusinessApiClient.cs` 中添加对应方法 3. 根据需要添加响应处理逻辑 ### 扩展功能 - **自定义枚举**: 在 `Models/Enums.cs` 中添加 - **数据验证**: 在数据模型中添加验证特性 - **错误处理**: 扩展 `ApiResponse` 模型 - **日志记录**: 集成日志框架 ## 接口文档 详细的接口文档请参考 [Doc/接口清单.md](Doc/接口清单.md) ## 配置说明 ### 默认配置 - **服务器地址**: `http://192.168.0.42:9991/hub` - **设备编号**: `DEV-PMP` - **超时时间**: 10秒(登录)/ 5秒(其他接口) - **重连间隔**: 5秒 ### 自定义配置 可以通过修改相应的类属性或配置文件来自定义这些设置。 ## 故障排除 ### 常见问题 1. **连接失败** - 检查服务器地址是否正确 - 确认服务器是否运行 - 检查网络连接 2. **登录失败** - 验证用户名和密码 - 检查服务器认证配置 3. **接口调用超时** - 增加超时时间设置 - 检查服务器响应性能 ### 调试技巧 - 使用Demo程序的消息日志功能 - 检查JSON格式是否正确 - 监控网络流量 ## 贡献指南 1. Fork 项目 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 创建 Pull Request ## 许可证 本项目采用 MIT 许可证。详情请参见 [LICENSE](LICENSE) 文件。 ## 更新日志 ### v1.0.0 (2025-01-XX) - ✅ 完成11个业务接口实现 - ✅ 完成MVVM架构重构 - ✅ 集成HandyControl UI库 - ✅ 添加完整的响应处理机制 - ✅ 实现实时消息日志功能 ## 联系方式 如有问题或建议,请通过以下方式联系: - 创建 Issue - 发送邮件至 [your-email@example.com] - 项目主页: [项目地址] --- **感谢使用 SignalR 通信工具集!** 🚀