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; }