Claw 项目完整结构提交
This commit is contained in:
283
Windows/CS/Framework4.0/XCamera/使用说明.md
Normal file
283
Windows/CS/Framework4.0/XCamera/使用说明.md
Normal file
@@ -0,0 +1,283 @@
|
||||
# XCamera库使用说明
|
||||
|
||||
## 项目结构
|
||||
```
|
||||
XCamera/
|
||||
├── XCamera.sln # Visual Studio解决方案文件
|
||||
├── XCamera.csproj # 项目文件
|
||||
├── README.md # 项目说明文档
|
||||
├── build.bat # 编译脚本(批处理)
|
||||
├── build.ps1 # 编译脚本(PowerShell)
|
||||
├── src/ # 源代码目录
|
||||
│ ├── XCamera.cs # 主类,提供静态API
|
||||
│ ├── XCameraManager.cs # 核心管理器
|
||||
│ ├── Core/ # 核心功能
|
||||
│ │ ├── ConfigurationManager.cs # 配置管理
|
||||
│ │ ├── CameraConnectionManager.cs # 摄像头连接管理
|
||||
│ │ ├── XCloudSdkWrapper.cs # SDK P/Invoke封装
|
||||
│ │ └── XCloudSdkEnums.cs # SDK枚举定义
|
||||
│ ├── Models/ # 数据模型
|
||||
│ │ ├── LedColor.cs # LED颜色枚举
|
||||
│ │ ├── LedState.cs # LED状态枚举
|
||||
│ │ ├── LedRegion.cs # LED区域定义
|
||||
│ │ ├── CameraConfig.cs # 摄像头配置
|
||||
│ │ └── LedStatus.cs # LED状态信息
|
||||
│ ├── Vision/ # 图像处理和LED检测
|
||||
│ │ ├── ImageProcessor.cs # 图像处理器
|
||||
│ │ └── LedDetector.cs # LED检测器
|
||||
│ └── UI/ # 用户界面
|
||||
│ └── RegionEditorForm.cs # 区域编辑器
|
||||
├── config/ # 配置文件
|
||||
│ └── sample_config.json # 示例配置文件
|
||||
├── lib/ # 依赖库
|
||||
│ └── XCloudSDK/ # XCloudSDK
|
||||
│ ├── XCloudSDK.dll # SDK动态库
|
||||
│ ├── XCloudSDK.lib # SDK静态库
|
||||
│ └── include/ # SDK头文件
|
||||
└── test/ # 测试程序
|
||||
└── Program.cs # 控制台测试程序
|
||||
```
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 1. 编译项目
|
||||
```bash
|
||||
# 使用PowerShell脚本编译
|
||||
powershell -ExecutionPolicy Bypass -File build.ps1
|
||||
|
||||
# 或使用批处理脚本
|
||||
build.bat
|
||||
```
|
||||
|
||||
### 2. 基本使用示例
|
||||
```csharp
|
||||
using System;
|
||||
using XCamera;
|
||||
|
||||
class Program
|
||||
{
|
||||
static void Main()
|
||||
{
|
||||
// 1. 初始化
|
||||
if (!XCamera.Initialize("config.json"))
|
||||
{
|
||||
Console.WriteLine("初始化失败");
|
||||
return;
|
||||
}
|
||||
|
||||
// 2. 启动摄像头
|
||||
if (XCamera.StartCamera())
|
||||
{
|
||||
Console.WriteLine("摄像头启动成功");
|
||||
|
||||
// 3. 开始捕获图像(自动检测LED)
|
||||
if (XCamera.StartCapture(1000)) // 1秒间隔
|
||||
{
|
||||
Console.WriteLine("开始捕获图像...");
|
||||
|
||||
// 4. 等待用户输入
|
||||
Console.WriteLine("按任意键停止...");
|
||||
Console.ReadKey();
|
||||
|
||||
// 5. 停止捕获
|
||||
XCamera.StopCapture();
|
||||
}
|
||||
|
||||
// 6. 停止摄像头
|
||||
XCamera.StopCamera();
|
||||
}
|
||||
|
||||
// 7. 关闭资源
|
||||
XCamera.Shutdown();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 3. 事件驱动使用示例
|
||||
```csharp
|
||||
using System;
|
||||
using XCamera;
|
||||
|
||||
class Program
|
||||
{
|
||||
static void Main()
|
||||
{
|
||||
// 订阅LED状态更新事件
|
||||
XCamera.LedStatusUpdated += OnLedStatusUpdated;
|
||||
XCamera.ConnectionStateChanged += OnConnectionStateChanged;
|
||||
XCamera.ErrorOccurred += OnErrorOccurred;
|
||||
|
||||
// 初始化并启动
|
||||
if (XCamera.Initialize("config.json"))
|
||||
{
|
||||
if (XCamera.StartCamera())
|
||||
{
|
||||
XCamera.StartCapture(1000);
|
||||
|
||||
// 运行10秒后停止
|
||||
Thread.Sleep(10000);
|
||||
|
||||
XCamera.StopCapture();
|
||||
XCamera.StopCamera();
|
||||
}
|
||||
}
|
||||
|
||||
XCamera.Shutdown();
|
||||
}
|
||||
|
||||
static void OnLedStatusUpdated(object sender, List<LedStatus> statuses)
|
||||
{
|
||||
Console.WriteLine($"[{DateTime.Now:HH:mm:ss}] LED状态更新:");
|
||||
foreach (var status in statuses)
|
||||
{
|
||||
Console.WriteLine($" {status.RegionName}: {status.DetectedColor} {status.State} " +
|
||||
$"{(status.IsBlinking ? "闪烁" : "")} 亮度:{status.Brightness} 置信度:{status.Confidence}%");
|
||||
}
|
||||
}
|
||||
|
||||
static void OnConnectionStateChanged(object sender, bool connected)
|
||||
{
|
||||
Console.WriteLine($"摄像头连接状态: {(connected ? "已连接" : "已断开")}");
|
||||
}
|
||||
|
||||
static void OnErrorOccurred(object sender, string error)
|
||||
{
|
||||
Console.WriteLine($"错误: {error}");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 配置文件
|
||||
|
||||
配置文件使用JSON格式,包含摄像头连接信息和LED区域定义:
|
||||
|
||||
```json
|
||||
{
|
||||
"IpAddress": "192.168.100.10",
|
||||
"TcpPort": 34567,
|
||||
"HttpPort": 8888,
|
||||
"OnvifPort": 8899,
|
||||
"Username": "admin",
|
||||
"Password": "",
|
||||
"Channel": 1,
|
||||
"LedRegions": [
|
||||
{
|
||||
"Id": "power_led",
|
||||
"Name": "电源指示灯",
|
||||
"X": 100,
|
||||
"Y": 50,
|
||||
"Width": 20,
|
||||
"Height": 20,
|
||||
"ExpectedColor": "Red",
|
||||
"ColorTolerance": 30,
|
||||
"MinBrightness": 100
|
||||
},
|
||||
{
|
||||
"Id": "status_led",
|
||||
"Name": "状态指示灯",
|
||||
"X": 150,
|
||||
"Y": 50,
|
||||
"Width": 20,
|
||||
"Height": 20,
|
||||
"ExpectedColor": "Green",
|
||||
"ColorTolerance": 30,
|
||||
"MinBrightness": 100
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## API参考
|
||||
|
||||
### 主要方法
|
||||
|
||||
| 方法 | 描述 |
|
||||
|------|------|
|
||||
| `Initialize(configFilePath)` | 初始化库 |
|
||||
| `SetConfigFile(configFilePath)` | 设置配置文件路径 |
|
||||
| `StartCamera()` | 启动摄像头连接 |
|
||||
| `StartCapture(intervalMs)` | 开始循环捕获图像 |
|
||||
| `DetectLeds()` | 手动检测LED状态 |
|
||||
| `GetLedStatuses()` | 获取LED状态 |
|
||||
| `ShowRegionEditor()` | 显示区域编辑器 |
|
||||
| `StopCapture()` | 停止捕获 |
|
||||
| `StopCamera()` | 停止摄像头 |
|
||||
| `Shutdown()` | 关闭并释放资源 |
|
||||
|
||||
### 事件
|
||||
|
||||
| 事件 | 描述 |
|
||||
|------|------|
|
||||
| `LedStatusUpdated` | LED状态更新事件 |
|
||||
| `ConnectionStateChanged` | 连接状态变更事件 |
|
||||
| `CaptureStateChanged` | 捕获状态变更事件 |
|
||||
| `ErrorOccurred` | 错误事件 |
|
||||
|
||||
### LED状态信息
|
||||
|
||||
`LedStatus`类包含以下属性:
|
||||
- `RegionId`: 区域ID
|
||||
- `RegionName`: 区域名称
|
||||
- `DetectedColor`: 检测到的颜色(Red/Yellow/Blue/Green/Unknown)
|
||||
- `State`: LED状态(On/Off/Blinking/Unknown)
|
||||
- `IsBlinking`: 是否闪烁
|
||||
- `Brightness`: 亮度值(0-255)
|
||||
- `Confidence`: 置信度(0-100%)
|
||||
- `LastUpdateTime`: 最后更新时间
|
||||
|
||||
## 测试程序
|
||||
|
||||
运行测试程序来验证库的功能:
|
||||
|
||||
```bash
|
||||
cd test
|
||||
dotnet run
|
||||
```
|
||||
|
||||
测试程序提供交互式菜单,可以测试所有功能:
|
||||
|
||||
```
|
||||
功能菜单:
|
||||
1. 初始化
|
||||
2. 设置配置文件路径
|
||||
3. 启动摄像头
|
||||
4. 开始捕获图像
|
||||
5. 检测LED灯状态
|
||||
6. 查询灯的状态
|
||||
7. 显示区域编辑器
|
||||
8. 停止捕获
|
||||
9. 停止摄像头
|
||||
10. 更新IP地址
|
||||
11. 保存配置
|
||||
12. 显示状态
|
||||
0. 退出
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **网络配置**: 确保摄像头IP地址正确,网络连接正常
|
||||
2. **权限**: 确保有足够的权限访问摄像头
|
||||
3. **配置文件**: LED区域坐标需要根据实际图像调整
|
||||
4. **性能**: 建议捕获间隔不要设置得太短(建议≥500ms)
|
||||
5. **资源释放**: 使用完毕后务必调用`Shutdown()`释放资源
|
||||
|
||||
## 故障排除
|
||||
|
||||
### 连接失败
|
||||
- 检查IP地址和端口配置
|
||||
- 确认摄像头网络连接正常
|
||||
- 验证用户名和密码
|
||||
|
||||
### LED检测不准确
|
||||
- 调整LED区域的坐标和大小
|
||||
- 调整亮度阈值和颜色容差
|
||||
- 确保图像质量良好
|
||||
|
||||
### 性能问题
|
||||
- 增加捕获间隔时间
|
||||
- 减少LED区域数量
|
||||
- 检查系统资源使用情况
|
||||
|
||||
## 技术支持
|
||||
|
||||
如有问题,请参考示例配置文件和测试程序进行调试。确保所有依赖项都已正确安装。
|
||||
Reference in New Issue
Block a user