251 lines
8.5 KiB
C#
251 lines
8.5 KiB
C#
using DM_Weight.util;
|
||
using PreviewDemo;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using System.Windows.Controls;
|
||
using System.Windows;
|
||
using DM_Weight.Port;
|
||
using log4net;
|
||
using System.Runtime.InteropServices;
|
||
|
||
namespace DM_Weight.HIKVISION
|
||
{
|
||
public class CHKFunction
|
||
{
|
||
private readonly ILog logger = LogManager.GetLogger(typeof(CHKFunction));
|
||
private bool m_bInitSDK = false;
|
||
|
||
private Int32 m_lRealHandle = -1;
|
||
public static int HKUserId = -1;
|
||
private uint iLastErr = 0;
|
||
private string str;
|
||
|
||
public CHCNetSDK.NET_DVR_USER_LOGIN_INFO struLogInfo;
|
||
public CHCNetSDK.NET_DVR_DEVICEINFO_V40 DeviceInfo;
|
||
public CHCNetSDK.NET_DVR_TIME m_struTimeCfg;
|
||
|
||
|
||
private System.ComponentModel.Container components = null;
|
||
|
||
public CHKFunction()
|
||
{
|
||
logger.Info("CHKFunction");
|
||
HIKInit();
|
||
HIKLogin();
|
||
}
|
||
|
||
public bool HIKInit()
|
||
{
|
||
try
|
||
{
|
||
|
||
|
||
logger.Info("HIKInit");
|
||
|
||
m_bInitSDK = CHCNetSDK.NET_DVR_Init();
|
||
|
||
logger.Info($"HIKInit-{m_bInitSDK}");
|
||
if (m_bInitSDK == false)
|
||
{
|
||
//MessageBox.Show("NET_DVR_Init error!");
|
||
//return;
|
||
logger.Info("NET_DVR_Init error!");
|
||
}
|
||
else
|
||
{
|
||
//保存SDK日志 To save the SDK log
|
||
CHCNetSDK.NET_DVR_SetLogToFile(3, "C:\\SdkLog\\", true);
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logger.Info($"HIKInit Exception:{ex.Message}");
|
||
}
|
||
return m_bInitSDK;
|
||
}
|
||
|
||
public int HIKLogin()
|
||
{
|
||
try
|
||
{
|
||
logger.Info("HIKLogin");
|
||
string ip = ReadApp.ReadAppSetting("HIKIP");
|
||
string port = ReadApp.ReadAppSetting("HIKPort");
|
||
string userName = ReadApp.ReadAppSetting("HIKUser");
|
||
string password = ReadApp.ReadAppSetting("HIKPassword");
|
||
if (HKUserId < 0)
|
||
{
|
||
|
||
struLogInfo = new CHCNetSDK.NET_DVR_USER_LOGIN_INFO();
|
||
|
||
//设备IP地址或者域名
|
||
byte[] byIP = System.Text.Encoding.Default.GetBytes(ip);
|
||
struLogInfo.sDeviceAddress = new byte[129];
|
||
byIP.CopyTo(struLogInfo.sDeviceAddress, 0);
|
||
|
||
//设备用户名
|
||
byte[] byUserName = System.Text.Encoding.Default.GetBytes(userName);
|
||
struLogInfo.sUserName = new byte[64];
|
||
byUserName.CopyTo(struLogInfo.sUserName, 0);
|
||
|
||
//设备密码
|
||
byte[] byPassword = System.Text.Encoding.Default.GetBytes(password);
|
||
struLogInfo.sPassword = new byte[64];
|
||
byPassword.CopyTo(struLogInfo.sPassword, 0);
|
||
|
||
struLogInfo.wPort = ushort.Parse(port);//设备服务端口号
|
||
|
||
//if (LoginCallBack == null)
|
||
//{
|
||
// LoginCallBack = new CHCNetSDK.LOGINRESULTCALLBACK(cbLoginCallBack);//注册回调函数
|
||
//}
|
||
//struLogInfo.cbLoginResult = LoginCallBack;
|
||
struLogInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是
|
||
|
||
DeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V40();
|
||
|
||
//登录设备 Login the device
|
||
HKUserId = CHCNetSDK.NET_DVR_Login_V40(ref struLogInfo, ref DeviceInfo);
|
||
if (HKUserId < 0)
|
||
{
|
||
iLastErr = CHCNetSDK.NET_DVR_GetLastError();
|
||
str = "NET_DVR_Login_V40 failed, error code= " + iLastErr; //登录失败,输出错误号
|
||
logger.Info(str);
|
||
}
|
||
else
|
||
{
|
||
//登录成功
|
||
//MessageBox.Show("Login Success!");
|
||
logger.Info("Login Success!");
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
//注销登录 Logout the device
|
||
if (m_lRealHandle >= 0)
|
||
{
|
||
//MessageBox.Show("Please stop live view firstly");
|
||
logger.Info("Please stop live view firstly");
|
||
}
|
||
|
||
if (!CHCNetSDK.NET_DVR_Logout(HKUserId))
|
||
{
|
||
iLastErr = CHCNetSDK.NET_DVR_GetLastError();
|
||
str = "NET_DVR_Logout failed, error code= " + iLastErr;
|
||
logger.Info(str);
|
||
}
|
||
HKUserId = -1;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
|
||
logger.Info($"HIKLogin Exception:{ex.Message}");
|
||
}
|
||
return HKUserId;
|
||
}
|
||
|
||
public void HIKLoginOut()
|
||
{
|
||
try
|
||
{
|
||
|
||
if (m_lRealHandle >= 0)
|
||
{
|
||
bool stopRealPlay = CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle);
|
||
logger.Info($"录像机NET_DVR_StopRealPlay接口返回{stopRealPlay}");
|
||
}
|
||
if (HKUserId >= 0)
|
||
{
|
||
bool logout = CHCNetSDK.NET_DVR_Logout(HKUserId);
|
||
logger.Info($"录像机NET_DVR_Logout接口返回{logout}");
|
||
}
|
||
if (m_bInitSDK == true)
|
||
{
|
||
bool cleanUp = CHCNetSDK.NET_DVR_Cleanup();
|
||
logger.Info($"录像机NET_DVR_Cleanup接口返回{cleanUp}");
|
||
}
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logger.Info($"HIKLoginOut Exception{ex.Message}");
|
||
}
|
||
}
|
||
|
||
public bool HIKStartDVRRecord()
|
||
{
|
||
bool isStart = false;
|
||
try
|
||
{
|
||
|
||
isStart = CHCNetSDK.NET_DVR_StartDVRRecord(HKUserId, 0xffff, 0);
|
||
logger.Info($"录像机NET_DVR_StartDVRRecord接口返回{isStart}");
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logger.Info($"HIKStartDVRRecord Exception{ex.Message}");
|
||
}
|
||
return isStart;
|
||
}
|
||
public bool HIKStopDVRRecord()
|
||
{
|
||
bool isStop = false;
|
||
try
|
||
{
|
||
|
||
isStop = CHCNetSDK.NET_DVR_StopDVRRecord(HKUserId, 0xffff);
|
||
logger.Info($"录像机NET_DVR_StopDVRRecord接口返回{isStop}");
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logger.Info($"HIKStopDVRRecord Exception{ex.Message}");
|
||
}
|
||
return isStop;
|
||
}
|
||
public void HIK_DVR_TIME()
|
||
{
|
||
try
|
||
{
|
||
|
||
UInt32 dwReturn = 0;
|
||
Int32 nSize = Marshal.SizeOf(m_struTimeCfg);
|
||
IntPtr ptrTimeCfg = Marshal.AllocHGlobal(nSize);
|
||
Marshal.StructureToPtr(m_struTimeCfg, ptrTimeCfg, false);
|
||
if (CHCNetSDK.NET_DVR_GetDVRConfig(HKUserId, CHCNetSDK.NET_DVR_GET_TIMECFG, -1, ptrTimeCfg, (UInt32)nSize, ref dwReturn))
|
||
{
|
||
|
||
m_struTimeCfg = (CHCNetSDK.NET_DVR_TIME)Marshal.PtrToStructure(ptrTimeCfg, typeof(CHCNetSDK.NET_DVR_TIME));
|
||
logger.Info($"录像机时间接口{Convert.ToString(m_struTimeCfg.dwYear)}- {Convert.ToString(m_struTimeCfg.dwMonth)}- {Convert.ToString(m_struTimeCfg.dwDay)}- {Convert.ToString(m_struTimeCfg.dwHour)}- {Convert.ToString(m_struTimeCfg.dwMinute)}- {Convert.ToString(m_struTimeCfg.dwSecond)}");
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logger.Info($"HIK_DVR_TIME Exception{ex.Message}");
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 清理所有正在使用的资源。
|
||
/// </summary>
|
||
//public void Dispose()
|
||
//{
|
||
// if (m_lRealHandle >= 0)
|
||
// {
|
||
// bool stopRealPlay= CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle);
|
||
// }
|
||
// if (HKUserId >= 0)
|
||
// {
|
||
// CHCNetSDK.NET_DVR_Logout(HKUserId);
|
||
// }
|
||
// if (m_bInitSDK == true)
|
||
// {
|
||
// CHCNetSDK.NET_DVR_Cleanup();
|
||
// }
|
||
//}
|
||
}
|
||
}
|