From 454b47e945c4fd614884856c49abd7de5abb48ad Mon Sep 17 00:00:00 2001 From: fajiao <1519100073@qq.com> Date: Thu, 1 Dec 2022 14:58:31 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E6=9B=B4=E6=96=B0=E7=9B=B8=E6=9C=BAs?= =?UTF-8?q?dk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Component/CameraSDK/CameraSdkServer.cs | 2 +- .../MarkSeacher/Seacher/YuShiMarkSeacher.cs | 4 +- EC.Helper/CameraSDK/Common/CameraException.cs | 54 +++++++++++++++++++ EC.Helper/CameraSDK/Common/CameraStruct.cs | 53 ------------------ EC.Helper/CameraSDK/Common/ICameraSDK.cs | 10 +++- EC.Helper/CameraSDK/DaHua/DaHuaSDK.cs | 27 +++++++++- EC.Helper/CameraSDK/HiK/HiKSDK.cs | 27 +++++++++- EC.Helper/CameraSDK/YuShi/YuShiSDK.cs | 14 ++++- 8 files changed, 129 insertions(+), 62 deletions(-) create mode 100644 EC.Helper/CameraSDK/Common/CameraException.cs diff --git a/Cis.Application/Core/Component/CameraSDK/CameraSdkServer.cs b/Cis.Application/Core/Component/CameraSDK/CameraSdkServer.cs index 10b3fd0..eeab93b 100644 --- a/Cis.Application/Core/Component/CameraSDK/CameraSdkServer.cs +++ b/Cis.Application/Core/Component/CameraSDK/CameraSdkServer.cs @@ -66,7 +66,7 @@ public class CameraSdkServer : ICameraSdkServer, ISingleton { bool ret = CameraSdkDict.TryGetValue(ip, out ICameraSDK cameraSDK); if (!ret) { ptzInfo = PtzInfo.Default; return false; } - return cameraSDK.GetPtzInfo(out ptzInfo); + return cameraSDK.TryGetPtzInfo(out ptzInfo); } #endregion Main Method diff --git a/Cis.Application/Core/Component/MarkSeacher/Seacher/YuShiMarkSeacher.cs b/Cis.Application/Core/Component/MarkSeacher/Seacher/YuShiMarkSeacher.cs index ec5a41c..fded412 100644 --- a/Cis.Application/Core/Component/MarkSeacher/Seacher/YuShiMarkSeacher.cs +++ b/Cis.Application/Core/Component/MarkSeacher/Seacher/YuShiMarkSeacher.cs @@ -1,6 +1,4 @@ -using System.Drawing; - -namespace Cis.Application.Core.Component.MarkSeacher; +namespace Cis.Application.Core.Component.MarkSeacher; public class YuShiMarkSearcher : MarkSearcherBase { diff --git a/EC.Helper/CameraSDK/Common/CameraException.cs b/EC.Helper/CameraSDK/Common/CameraException.cs new file mode 100644 index 0000000..7b4853c --- /dev/null +++ b/EC.Helper/CameraSDK/Common/CameraException.cs @@ -0,0 +1,54 @@ +namespace EC.Helper.CameraSDK; + +/// +/// 相机异常 +/// +public class CameraException : Exception +{ + public CameraException() : base() + { + } + + public CameraException(string? message) : base(message) + { + } + + public CameraException(string? message, Exception? innerException) : base(message, innerException) + { + } + + protected class CameraExceptionObj + { + public CameraType Type { get; set; } + + public int ErrCode { get; set; } + + public string? ErrMsg { get; set; } + + public override string? ToString() + { + return $"Type:{Type}, ErrCode:{ErrCode}, ErrMsg:{ErrMsg}"; + } + } + + public static CameraException New(CameraType type, int errCode) + { + CameraExceptionObj obj = new() + { + Type = type, + ErrCode = errCode + }; + return new CameraException(obj.ToString()); + } + + public static CameraException New(CameraType type, int errCode, string errMsg) + { + CameraExceptionObj obj = new() + { + Type = type, + ErrCode = errCode, + ErrMsg = errMsg + }; + return new CameraException(obj.ToString()); + } +} \ No newline at end of file diff --git a/EC.Helper/CameraSDK/Common/CameraStruct.cs b/EC.Helper/CameraSDK/Common/CameraStruct.cs index 132f394..d4b0a97 100644 --- a/EC.Helper/CameraSDK/Common/CameraStruct.cs +++ b/EC.Helper/CameraSDK/Common/CameraStruct.cs @@ -109,56 +109,3 @@ public class PtzInfo return new PtzInfo(pan, tilt, zoom); } } - -/// -/// 相机异常 -/// -public class CameraException : Exception -{ - public CameraException() : base() - { - } - - public CameraException(string? message) : base(message) - { - } - - public CameraException(string? message, Exception? innerException) : base(message, innerException) - { - } - - protected class CameraExceptionObj - { - public CameraType Type { get; set; } - - public int ErrCode { get; set; } - - public string? ErrMsg { get; set; } - - public override string? ToString() - { - return $"Type:{Type}, ErrCode:{ErrCode}, ErrMsg:{ErrMsg}"; - } - } - - public static CameraException New(CameraType type, int errCode) - { - CameraExceptionObj obj = new() - { - Type = type, - ErrCode = errCode - }; - return new CameraException(obj.ToString()); - } - - public static CameraException New(CameraType type, int errCode, string errMsg) - { - CameraExceptionObj obj = new() - { - Type = type, - ErrCode = errCode, - ErrMsg = errMsg - }; - return new CameraException(obj.ToString()); - } -} \ No newline at end of file diff --git a/EC.Helper/CameraSDK/Common/ICameraSDK.cs b/EC.Helper/CameraSDK/Common/ICameraSDK.cs index 1bcd3a5..703d290 100644 --- a/EC.Helper/CameraSDK/Common/ICameraSDK.cs +++ b/EC.Helper/CameraSDK/Common/ICameraSDK.cs @@ -34,7 +34,7 @@ public abstract class ICameraSDK public abstract bool ConnectSuccess(); /// - /// 处理异常 + /// 构建异常 /// public abstract void BuildException(); @@ -46,7 +46,13 @@ public abstract class ICameraSDK /// 获取 ptz /// /// - public abstract bool GetPtzInfo(out PtzInfo ptzInfo); + public abstract PtzInfo GetPtzInfo(); + + /// + /// 获取 ptz + /// + /// + public abstract bool TryGetPtzInfo(out PtzInfo ptzInfo); #endregion Main Method } \ No newline at end of file diff --git a/EC.Helper/CameraSDK/DaHua/DaHuaSDK.cs b/EC.Helper/CameraSDK/DaHua/DaHuaSDK.cs index e7cb626..fd3a94d 100644 --- a/EC.Helper/CameraSDK/DaHua/DaHuaSDK.cs +++ b/EC.Helper/CameraSDK/DaHua/DaHuaSDK.cs @@ -82,7 +82,32 @@ public class DaHuaSDK : ICameraSDK } } - public override bool GetPtzInfo(out PtzInfo ptzInfo) + public override PtzInfo GetPtzInfo() + { + bool ret = ConnectSuccess(); + if (!ret) return PtzInfo.Default; + + DaHuaOriSDK.DH_PTZ_LOCATION_INFO entity = new(); + int nBufLen = GPIParams.Size; + int pRetLen = 0; + IntPtr ptrBuf = Marshal.AllocHGlobal(GPIParams.Size); + Marshal.StructureToPtr(entity, ptrBuf, true); + try + { + ret = DaHuaOriSDK.CLIENT_QueryDevState(LoginId, (int)DaHuaOriSDK.EM_DEVICE_STATE.PTZ_LOCATION, ptrBuf, nBufLen, ref pRetLen, 3000); + if (!ret) { BuildException(); return PtzInfo.Default; } + object? objBuf = Marshal.PtrToStructure(ptrBuf, GPIParams.Type); + if (objBuf == null) return PtzInfo.Default; + entity = (DaHuaOriSDK.DH_PTZ_LOCATION_INFO)objBuf; + return PtzInfo.New(entity.nPTZPan, entity.nPTZTilt, entity.nPTZZoom); + } + finally + { + Marshal.FreeHGlobal(ptrBuf); + } + } + + public override bool TryGetPtzInfo(out PtzInfo ptzInfo) { bool ret = ConnectSuccess(); if (!ret) { ptzInfo = PtzInfo.Default; return false; } diff --git a/EC.Helper/CameraSDK/HiK/HiKSDK.cs b/EC.Helper/CameraSDK/HiK/HiKSDK.cs index 7764f02..517a28d 100644 --- a/EC.Helper/CameraSDK/HiK/HiKSDK.cs +++ b/EC.Helper/CameraSDK/HiK/HiKSDK.cs @@ -68,7 +68,32 @@ public class HiKSDK : ICameraSDK } } - public override bool GetPtzInfo(out PtzInfo ptzInfo) + public override PtzInfo GetPtzInfo() + { + bool ret = ConnectSuccess(); + if (!ret) return PtzInfo.Default; + + HiKOriSDK.NET_DVR_PTZPOS entity = new(); + int dwSize = GPIParams.Size; + uint dwReturned = 0; + IntPtr ptrBuf = Marshal.AllocHGlobal(dwSize); + Marshal.StructureToPtr(entity, ptrBuf, true); + try + { + ret = HiKOriSDK.NET_DVR_GetDVRConfig(LoginId, HiKOriSDK.NET_DVR_GET_PTZPOS, 0, ptrBuf, (uint)dwSize, ref dwReturned); + if (!ret) { BuildException(); return PtzInfo.Default; } + object? objBuf = Marshal.PtrToStructure(ptrBuf, GPIParams.Type); + if (objBuf == null) return PtzInfo.Default; + entity = (HiKOriSDK.NET_DVR_PTZPOS)objBuf; + return PtzInfo.New(entity.wPanPos, entity.wTiltPos, entity.wZoomPos); + } + finally + { + Marshal.FreeHGlobal(ptrBuf); + } + } + + public override bool TryGetPtzInfo(out PtzInfo ptzInfo) { bool ret = ConnectSuccess(); if (!ret) { ptzInfo = PtzInfo.Default; return false; } diff --git a/EC.Helper/CameraSDK/YuShi/YuShiSDK.cs b/EC.Helper/CameraSDK/YuShi/YuShiSDK.cs index f62a409..6ff5959 100644 --- a/EC.Helper/CameraSDK/YuShi/YuShiSDK.cs +++ b/EC.Helper/CameraSDK/YuShi/YuShiSDK.cs @@ -58,7 +58,19 @@ public class YuShiSDK : ICameraSDK #region Main Method - public override bool GetPtzInfo(out PtzInfo ptzInfo) + public override PtzInfo GetPtzInfo() + { + bool ret = ConnectSuccess(); + if (!ret) return PtzInfo.Default; + + YuShiOriSDK.NETDEV_PTZ_STATUS_S entity = new(); + ret = YuShiOriSDK.NETDEV_PTZGetStatus(LoginId, 1, ref entity); + if (!ret) { BuildException(); return PtzInfo.Default; } + + return PtzInfo.New(entity.fPanTiltX, entity.fPanTiltY, entity.fZoomX); + } + + public override bool TryGetPtzInfo(out PtzInfo ptzInfo) { bool ret = ConnectSuccess(); if (!ret) { ptzInfo = PtzInfo.Default; return false; }