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; 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; private System.ComponentModel.Container components = null; public CHKFunction() { HIKInit(); HIKLogin(); } public bool HIKInit() { m_bInitSDK = CHCNetSDK.NET_DVR_Init(); 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); } return m_bInitSDK; } public int 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; } return HKUserId; } public void HIKLoginOut() { 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}"); } } public bool HIKStartDVRRecord() { bool isStart= CHCNetSDK.NET_DVR_StartDVRRecord(HKUserId, 0xffff, 0); logger.Info($"录像机NET_DVR_StartDVRRecord接口返回{isStart}"); return isStart; } public bool HIKStopDVRRecord() { bool isStop = CHCNetSDK.NET_DVR_StopDVRRecord(HKUserId, 0xffff); logger.Info($"录像机NET_DVR_StopDVRRecord接口返回{isStop}"); return isStop; } /// /// 清理所有正在使用的资源。 /// //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(); // } //} } }