From ca4970bcbf5d73509348cb7046555491122f75e9 Mon Sep 17 00:00:00 2001 From: zqm Date: Mon, 16 Mar 2026 14:56:15 +0800 Subject: [PATCH] =?UTF-8?q?ONVIF=E6=91=84=E5=83=8F=E5=A4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.trae/documents/XCamera_Library_Plan.md | 215 ++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 Windows/CS/Framework4.0/XCamera/.trae/documents/XCamera_Library_Plan.md diff --git a/Windows/CS/Framework4.0/XCamera/.trae/documents/XCamera_Library_Plan.md b/Windows/CS/Framework4.0/XCamera/.trae/documents/XCamera_Library_Plan.md new file mode 100644 index 0000000..69568c1 --- /dev/null +++ b/Windows/CS/Framework4.0/XCamera/.trae/documents/XCamera_Library_Plan.md @@ -0,0 +1,215 @@ +# XCamera LED灯识别库实施计划(更新版) + +## 项目概述 +基于.NET Framework 4.0创建一个XCamera库,用于摄像头初始化、图像捕获、LED灯区域识别和状态检测。 + +## 参考资料位置 +- **SDK文件位置**: `d:\Projects\trunk\XCamera\Windows-x86_64_XCloudSDK_20241202\XCloudSDK_20241202_VS\` +- **C# Demo参考**: `d:\Projects\trunk\XCamera\Windows-x86_64_XCloudSDK_C#Demo_20241202\XCloudSDK_20241202_NET\demo\XCloudSDKDemo_CS\` +- **SDK库文件**: `d:\Projects\trunk\XCamera\Windows-x86_64_XCloudSDK_20241202\XCloudSDK_20241202_VS\bin\x86_64\Release\XCloudSDK.dll` +- **头文件**: `d:\Projects\trunk\XCamera\Windows-x86_64_XCloudSDK_20241202\XCloudSDK_20241202_VS\include\` + +## 摄像头连接配置 +- **IP地址**: 通过配置接口设置(默认192.168.100.10) +- **TCP端口**: 34567(固定) +- **HTTP端口**: 8888(固定) +- **ONVIF端口**: 8899(固定) +- **连接方式**: 直接根据提供的IP地址连接,**不需要设备搜索功能** + +## 实施步骤 + +### 阶段1:项目结构和基础框架 +1. **创建项目结构** + - 创建Class Library项目 + - 设置.NET Framework 4.0目标框架 + - 添加必要的引用和依赖 + - 复制XCloudSDK.dll到项目lib目录 + +2. **定义核心接口和枚举** + - LED颜色枚举(红、黄、蓝、绿) + - LED状态枚举(亮、灭、闪烁) + - 区域定义结构 + - 配置数据结构(包含IP地址配置) + +3. **实现SDK封装类** + - XCloudSDK P/Invoke方法封装 + - 设备连接管理(固定端口连接) + - 错误处理机制 + +### 阶段2:配置管理 +4. **配置文件处理** + - 创建配置类结构 + - 实现JSON配置文件的读取和解析 + - 支持摄像头IP地址配置 + - 支持LED区域定义(坐标、大小、颜色阈值) + - 实现配置文件验证 + +### 阶段3:摄像头功能 +5. **摄像头初始化和连接** + - 实现SDK初始化 + - **直接连接指定IP地址**(无需设备搜索) + - 使用固定端口:TCP 34567, HTTP 8888, ONVIF 8899 + - 登录验证 + - 异常处理 + +6. **图像捕获功能** + - 实现实时预览 + - 图像抓图功能 + - 图像数据转换为.NET可用格式 + - 循环捕获机制 + +### 阶段4:LED识别核心算法 +7. **图像处理基础** + - 使用System.Drawing进行图像处理 + - 实现颜色空间转换(RGB到HSV) + - 区域提取功能 + +8. **LED状态识别算法** + - 实现颜色识别算法 + - 亮度检测算法 + - 闪烁检测算法(多帧比较) + - 状态缓存和更新机制 + +### 阶段5:用户界面和工具 +9. **区域设置工具** + - 创建区域设置窗口 + - 实现可视化区域选择 + - 实时预览和区域调整 + - 配置保存功能 + +### 阶段6:API接口和清理 +10. **公共API设计** + - 初始化/卸载接口 + - 状态查询接口 + - 配置接口(IP地址设置) + - 事件通知机制 + +11. **资源管理** + - 实现IDisposable接口 + - 资源清理机制 + - 异常安全处理 + +## 关键技术实现 + +### 固定端口连接实现 +```csharp +public class CameraConnector +{ + private const int TCP_PORT = 34567; + private const int HTTP_PORT = 8888; + private const int ONVIF_PORT = 8899; + + private string _ipAddress = "192.168.100.10"; // 默认可通过配置修改 + + public void SetIpAddress(string ipAddress) + { + _ipAddress = ipAddress; + } + + public bool Connect() + { + // 直接使用IP地址连接,无需设备搜索 + string connectParam = $"{{\"IP\":\"{_ipAddress}\",\"Port\":{TCP_PORT}}}"; + return XCloudSDK_Connect(connectParam) == 0; + } +} +``` + +### 配置结构(更新版) +```json +{ + "CameraConfig": { + "IpAddress": "192.168.100.10", + "TcpPort": 34567, + "HttpPort": 8888, + "OnvifPort": 8899, + "Username": "admin", + "Password": "password", + "Channel": 1 + }, + "LedRegions": [ + { + "Id": "led1", + "Name": "状态指示灯", + "X": 100, + "Y": 50, + "Width": 20, + "Height": 20, + "ExpectedColor": "Red", + "Threshold": { + "MinBrightness": 100, + "ColorTolerance": 30 + } + } + ] +} +``` + +### P/Invoke封装(简化连接) +```csharp +[DllImport("XCloudSDK.dll")] +public static extern int XCloudSDK_Init(string sJsonParam); + +[DllImport("XCloudSDK.dll")] +public static extern int XCloudSDK_Device_DevLogin(int hUser, string sDevId, int nSeq); + +[DllImport("XCloudSDK.dll")] +public static extern int XCloudSDK_Device_MediaRealPlay(int hUser, string sDevId, int nChannel, int nStreamType, IntPtr hWnd, int nSeq, string szParam); + +[DllImport("XCloudSDK.dll")] +public static extern int XCloudSDK_Play_MediaSnapImage(int nPlayHandle, string sFileName); +``` + +## 项目文件结构 +``` +XCamera/ +├── XCamera.csproj +├── XCamera.sln +├── src/ +│ ├── Core/ +│ │ ├── XCameraManager.cs +│ │ ├── ConfigurationManager.cs +│ │ ├── SdkWrapper.cs +│ │ └── CameraConnector.cs // 固定端口连接 +│ ├── Models/ +│ │ ├── LedRegion.cs +│ │ ├── LedState.cs +│ │ ├── CameraConfig.cs // 包含IP配置 +│ │ └── LedColor.cs +│ ├── Vision/ +│ │ ├── ImageProcessor.cs +│ │ ├── LedDetector.cs +│ │ └── ColorAnalyzer.cs +│ ├── UI/ +│ │ └── RegionEditorForm.cs +│ └── Utils/ +│ ├── JsonHelper.cs +│ └── ImageHelper.cs +├── lib/ +│ └── XCloudSDK/ +│ ├── XCloudSDK.dll // 从参考资料复制 +│ ├── XCloudSDK.lib +│ └── include/ +├── config/ +│ └── sample_config.json // 包含IP配置示例 +└── tools/ + └── CopySdkFiles.bat // 复制SDK文件脚本 +``` + +## 实施优先级 +1. **高优先级**: SDK封装、固定IP连接、基础图像捕获 +2. **中优先级**: LED识别算法、配置管理 +3. **低优先级**: 区域设置UI、高级功能 + +## 测试和验证 +1. **连接测试**: 验证固定IP连接功能 +2. **图像捕获测试**: 验证图像获取和格式转换 +3. **LED识别测试**: 验证颜色和状态识别准确性 +4. **配置测试**: 验证IP地址配置和修改功能 + +## 注意事项 +1. **线程安全**: 确保多线程环境下的安全操作 +2. **资源管理**: 及时释放SDK资源和图像内存 +3. **异常处理**: 完善的错误处理和日志记录 +4. **配置验证**: IP地址格式验证和端口可用性检查 +5. **性能优化**: 图像处理算法优化,确保实时性 \ No newline at end of file