增加大华设备对云台移动、缩放、聚集、光圈、校时、重启的支持

增加海康、大华对预置点的支持
This commit is contained in:
2026-03-03 13:55:37 +08:00
parent 0399871467
commit d1fc94be1c
15 changed files with 683 additions and 65 deletions

View File

@@ -0,0 +1,44 @@
using Serilog;
using Ayay.SerilogLogs;
namespace SHH.CameraSdk.DahuaFeatures;
/// <summary>
/// [大华功能组件] 远程重启实现
/// </summary>
public class DahuaRebootProvider : IRebootFeature
{
private ILogger _sdkLog = Log.ForContext("SourceContext", LogModules.DaHuaSdk);
private readonly IDahuaContext _context;
public DahuaRebootProvider(IDahuaContext context)
{
_context = context;
}
/// <summary>执行异步重启</summary>
public async Task RebootAsync()
{
// 1. 检查登录状态 (参照海康逻辑)
IntPtr loginId = _context.GetUserId();
if (loginId == IntPtr.Zero)
throw new InvalidOperationException("大华设备未登录或句柄失效,无法发送重启指令");
// 2. 执行 SDK 调用
await Task.Run(() =>
{
bool result = NETClient.ControlDevice(loginId, EM_CtrlType.REBOOT, IntPtr.Zero, 5000);
if (!result)
{
string err = NETClient.GetLastError();
_sdkLog.Error("[SDK] Dahua 重启指令下发失败. Error: {Error}", err);
throw new Exception($"大华重启指令发送失败,错误码: {err}");
}
_sdkLog.Information("[SDK] Dahua 重启指令下发成功,设备即将断开连接。");
});
}
}