|
|
|
namespace EC.Helper.CameraSDK;
|
|
|
|
|
|
|
|
public class YuShiSDK : ICameraSDK
|
|
|
|
{
|
|
|
|
#region Attr
|
|
|
|
|
|
|
|
private IntPtr LoginId { get; set; } = IntPtr.Zero;
|
|
|
|
|
|
|
|
#endregion Attr
|
|
|
|
|
|
|
|
public YuShiSDK(CameraInfo cameraInfo) : base(cameraInfo)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
#region Base Method
|
|
|
|
|
|
|
|
public override bool Init()
|
|
|
|
{
|
|
|
|
bool ret = ConnectSuccess();
|
|
|
|
if (ret) return true;
|
|
|
|
|
|
|
|
YuShiOriSDK.NETDEV_DEVICE_LOGIN_INFO_S loginInfo = new();
|
|
|
|
loginInfo.szIPAddr = CameraInfo.Ip;
|
|
|
|
loginInfo.dwPort = CameraInfo.Port;
|
|
|
|
loginInfo.szUserName = CameraInfo.UserName;
|
|
|
|
loginInfo.szPassword = CameraInfo.Password;
|
|
|
|
YuShiOriSDK.NETDEV_SELOG_INFO_S logInfo = new();
|
|
|
|
LoginId = YuShiOriSDK.NETDEV_Login_V30(ref loginInfo, ref logInfo);
|
|
|
|
ret = ConnectSuccess();
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
public override bool Destory()
|
|
|
|
{
|
|
|
|
bool ret = ConnectSuccess();
|
|
|
|
if (!ret) return true;
|
|
|
|
|
|
|
|
ret = YuShiOriSDK.NETDEV_Logout(LoginId);
|
|
|
|
if (ret) LoginId = IntPtr.Zero;
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
public override bool ConnectSuccess()
|
|
|
|
{
|
|
|
|
return LoginId != IntPtr.Zero;
|
|
|
|
}
|
|
|
|
|
|
|
|
public override void BuildException()
|
|
|
|
{
|
|
|
|
int errCode = YuShiOriSDK.NETDEV_GetLastError();
|
|
|
|
if (errCode == 0) return;
|
|
|
|
throw CameraException.New(CameraManufactor.YuShi, (int)errCode);
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion Base Method
|
|
|
|
|
|
|
|
#region Main Method
|
|
|
|
|
|
|
|
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; }
|
|
|
|
|
|
|
|
YuShiOriSDK.NETDEV_PTZ_STATUS_S entity = new();
|
|
|
|
ret = YuShiOriSDK.NETDEV_PTZGetStatus(LoginId, 1, ref entity);
|
|
|
|
if (!ret) { BuildException(); ptzInfo = PtzInfo.Default; return false; }
|
|
|
|
|
|
|
|
ptzInfo = PtzInfo.New(entity.fPanTiltX, entity.fPanTiltY, entity.fZoomX);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion Main Method
|
|
|
|
}
|