192 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			192 lines
		
	
	
		
			6.8 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 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()
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            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 HIK_DVR_TIME()
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            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)}");
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        /// <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();
							 | 
						|||
| 
								 | 
							
								        //    }
							 | 
						|||
| 
								 | 
							
								        //}
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |