public Session Login(string ipAddress, int port, string userName, string password) { NET_DVR_DEVICEINFO_V30 deviceInfo = default(NET_DVR_DEVICEINFO_V30); int userId = SdkHelper.InvokeSDK(() => NET_DVR_Login_V30(ipAddress, port, userName, password, ref deviceInfo)); return(new Session(userId, deviceInfo.byChanNum)); }
public FaceCamera() { deviceInfo = new NET_DVR_DEVICEINFO_V30(); dvrIPAddress1 = "172.16.210.240"; //设备IP地址或者域名 dvrIPAddress2 = "172.16.210.241"; //设备IP地址或者域名 dvrPortNumber = Int16.Parse("8000"); //设备服务端口号 dvrUserName = "******"; //设备登录用户名 dvrPassword = "******"; //设备登录密码 }
public Camera(string ipAddress, short port, string userName, string password) { DVRIPAddress = ipAddress; DVRPortNumber = port; DVRUserName = userName; DVRPassword = password; DeviceInfo = new NET_DVR_DEVICEINFO_V30(); User = new IntPtr(); }
private int LoginNormalDevice() { m_oNetDvrDeviceInfoV30 = new NET_DVR_DEVICEINFO_V30 { ByAlarmInPortNum = default }; if (null == m_oNetDvrDeviceInfoV30) { Console.WriteLine("HKNetDvrDeviceInfoV30 new is failed!"); return(-1); } string StrIP = m_oIPAddr.Text.ToString(); int nPort = int.Parse(m_oPort.Text.ToString()); string StrUser = m_oUser.Text.ToString(); string StrPsd = m_oPsd.Text.ToString(); // call NET_DVR_Login_v30 to login on, port 8000 as default int iLogID = HCNetSDK.Instance.NET_DVR_Login_V30(StrIP, nPort, StrUser, StrPsd, m_oNetDvrDeviceInfoV30); if (iLogID < 0) { Console.WriteLine("NET_DVR_Login is failed!Err:" + HCNetSDK.Instance.NET_DVR_GetLastError()); return(-1); } if (m_oNetDvrDeviceInfoV30.ByChanNum > 0) { m_iStartChan = m_oNetDvrDeviceInfoV30.ByStartChan; m_iChanNum = m_oNetDvrDeviceInfoV30.ByChanNum; } else if (m_oNetDvrDeviceInfoV30.ByIPChanNum > 0) { m_iStartChan = m_oNetDvrDeviceInfoV30.ByStartDChan; m_iChanNum = 1 /* m_oNetDvrDeviceInfoV30.ByIPChanNum + m_oNetDvrDeviceInfoV30.byHighDChanNum * 256*/; } if (m_iChanNum > 1) { ChangeSingleSurFace(false); } else { ChangeSingleSurFace(true); } Log.Info("", "NET_DVR_Login is Successful!"); return(iLogID); }
public bool StartTlak(Enum_TalkModel talkModel) { bool bolResult = false; if (CurrentTalkStatus != Enum_TalkStatus.Null) //处于对讲中 先关闭 { StopTalk(); } StartTalking(null); NET_DVR_DEVICEINFO_V30 dev = new NET_DVR_DEVICEINFO_V30(); _intDVRHwd = NET_DVR_Login_V30(CurrentVideoInfo.DVSAddress, CurrentVideoInfo.DVSConnectPort, CurrentVideoInfo.UserName, CurrentVideoInfo.Password, ref dev); VoiceCallBack = new fVoiceDataCallBack(MyRealDataCallBack); _intTalkHwd = NET_DVR_StartVoiceCom(_intDVRHwd, VoiceCallBack, 0); NET_DVR_SetVoiceComClientVolume(_intTalkHwd, 65530); CurrentTalkStatus = (Enum_TalkStatus)(int)talkModel; return(bolResult); }
public Camera(string ipAddress, short port, string userName, string password) { DVRIPAddress = ipAddress; DVRPortNumber = port; DVRUserName = userName; DVRPassword = password; DeviceInfo = new NET_DVR_DEVICEINFO_V30(); RealPlayHandle = -1; PlaybackHandle = -1; DownloadHandle = -1; x1 = 0; y1 = 0; x2 = 0; y2 = 0; }
/// <summary> /// 获取模拟通道信息 /// </summary> /// <param name="info">登录设备时的UseInfo对象</param> /// <returns>通道属性对象集合</returns> private List <ChannelState> GetAnalogChannelInfo(ref DvrUseInfo info) { NET_DVR_IPPARACFG_V40 m_struIpParaCfgV40 = new NET_DVR_IPPARACFG_V40(); NET_DVR_DEVICEINFO_V30 deviceInfo = new NET_DVR_DEVICEINFO_V30(); List <ChannelState> states = new List <ChannelState>(); uint dwSize = (uint)Marshal.SizeOf(m_struIpParaCfgV40); IntPtr ptrIpParaCfgV40 = Marshal.AllocHGlobal((Int32)dwSize); Marshal.StructureToPtr(m_struIpParaCfgV40, ptrIpParaCfgV40, false); uint dwReturn = 0; if (!HikApi.NET_DVR_GetDVRConfig(info.UserId, NET_DVR_GET_IPPARACFG_V40, -1, ptrIpParaCfgV40, dwSize, ref dwReturn)) { return(states); } else { m_struIpParaCfgV40 = (NET_DVR_IPPARACFG_V40)Marshal.PtrToStructure(ptrIpParaCfgV40, typeof(NET_DVR_IPPARACFG_V40)); for (int i = 0; i < dwAChanTotalNum; i++) { ChannelState state = new ChannelState() { Num = i + 1, IsIpChannel = false }; if (m_struIpParaCfgV40.byAnalogChanEnable[i] == 0) { state.IsEnabled = false; //通道已被禁用 This channel has been disabled } else { state.IsEnabled = true; //通道处于启用状态 } states.Add(state); iChannelNum[i] = i + (int)deviceInfo.byStartChan; } } Marshal.FreeHGlobal(ptrIpParaCfgV40); return(states); }
/// <summary> /// 海康视频播放 /// </summary> public void HikDVR_VideoPlay() { NET_DVR_DEVICEINFO_V30 dev = new NET_DVR_DEVICEINFO_V30(); _intDVRHwd = NET_DVR_Login_V30(CurrentVideoInfo.DVSAddress, CurrentVideoInfo.DVSConnectPort, CurrentVideoInfo.UserName, CurrentVideoInfo.Password, ref dev); if (_intDVRHwd < 0) { //登陆失败 return; } return; NET_DVR_PREVIEWINFO lpPreviewInfo = new NET_DVR_PREVIEWINFO(); lpPreviewInfo.hPlayWnd = pictureBox1.Handle; //预览窗口 lpPreviewInfo.lChannel = CurrentCameraInfo.Channel; lpPreviewInfo.dwStreamType = 0; //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推 lpPreviewInfo.dwLinkMode = 0; //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP lpPreviewInfo.bBlocked = true; //0- 非阻塞取流,1- 阻塞取流 //NET_DVR_CLIENTINFO cli = new NET_DVR_CLIENTINFO(); //cli.lLinkMode = 0;// 设置连接方式 /* 最高位(31)为 0 表示主码流,为 1 表示子码流,0-30 位表示码流连接方式:0:TCP方式,1:UDP 方式,2:多播方式,3 - RTP方式,4—音视频分开 */ //cli.lChannel = channel + 32; //cli.hPlayWnd = playHandle; // 开始播放视频 //Thread.Sleep(50); IntPtr pUser = new IntPtr(); REALDATACALLBACK RealData = new REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数 //intRet = NET_DVR_RealPlay_V30(_intDVRHwd, ref cli, null, pUser, 1);//130814 intRet = NET_DVR_RealPlay_V40(_intDVRHwd, ref lpPreviewInfo, null, pUser); //140521 //intRet = NET_DVR_RealPlay(_intDVRHwd, ref cli);//130814 NET_DVR_OpenSound(intRet); //140609 if (intRet < 0) { return; } }
/// <summary> /// 登录设备 /// </summary> /// <param name="deviceIp">设备ip</param> /// <param name="userName">用户账号</param> /// <param name="userPwd">用户密码</param> /// <param name="userId">输出用户id</param> /// <param name="port">通讯端口</param> /// <returns>TRUE:成功 FALSE:失败</returns> public static bool LoginDevice(string deviceIp, string userName, string userPwd, ref int userId, short port = 8000) { if (deviceIp == "" || port < 0 || userName == "" || userPwd == "") { return(false); } string DVRIPAddress = deviceIp; Int16 DVRPortNumber = port; string DVRUserName = userName; string DVRPassword = userPwd; //登录设备 Login the device NET_DVR_DEVICEINFO_V30 m_struDeviceInfo = new NET_DVR_DEVICEINFO_V30(); userId = HikApi.NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, ref m_struDeviceInfo); if (userId == -1) { //iLastErr = NET_DVR_GetLastError(); //strErr = "NET_DVR_Login_V30 failed, error code= " + iLastErr; //登录失败,输出错误号 Failed to login and output the error code return(false); } return(true); }
/// <summary> /// 登录设备 /// </summary> /// <param name="info">登录设备所需的信息</param> /// <returns>true:成功,false:失败</returns> public bool Login(ref DvrUseInfo info) { bool b = false; if (info.UserId <= -1) { string DVRIPAddress = info.DvrIp; //设备IP地址或者域名 short DVRPortNumber = short.Parse(info.DvrPoint.ToString()); //设备服务端口号 string DVRUserName = info.UserName; //设备登录用户名 string DVRPassword = info.UserPwd; //设备登录密码 NET_DVR_DEVICEINFO_V30 DeviceInfo = new NET_DVR_DEVICEINFO_V30(); //登录设备 Login the device info.UserId = HikApi.NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, ref DeviceInfo); if (info.UserId < 0) { b = false; } else { b = true; } } return(b); }
private void FrmRecordPlay_Load(object sender, EventArgs e) { VideoInfo v = TestDataSource.HikDataSource.GetHikData1(); CheckForIllegalCrossThreadCalls = false; bool bolResult = NET_DVR_Init();//初始化SDK NET_DVR_DEVICEINFO_V30 DeviceInfo = new NET_DVR_DEVICEINFO_V30(); //登录设备 m_lUserID = NET_DVR_Login_V30(v.DVSAddress, v.DVSConnectPort, v.UserName, v.Password, ref DeviceInfo); if (m_lUserID < 0) { //int iError=NET_DVR_GetLastError();//错误返回值 MessageBox.Show("设备登录失败,请检查网络或者参数是否错误!"); return; } sTime = DateTime.Now.AddDays(-1); NET_DVR_TIME Stime = new NET_DVR_TIME(); Stime.dwYear = uint.Parse(sTime.Year.ToString()); Stime.dwMonth = uint.Parse(sTime.Month.ToString()); Stime.dwDay = uint.Parse(sTime.Day.ToString()); Stime.dwHour = uint.Parse(sTime.Hour.ToString()); Stime.dwMinute = uint.Parse(sTime.Minute.ToString()); Stime.dwSecond = uint.Parse(sTime.Second.ToString()); eTime = DateTime.Now.AddDays(1); NET_DVR_TIME Etime = new NET_DVR_TIME(); Etime.dwYear = uint.Parse(eTime.Year.ToString()); Etime.dwMonth = uint.Parse(eTime.Month.ToString()); Etime.dwDay = uint.Parse(eTime.Day.ToString()); Etime.dwHour = uint.Parse(eTime.Hour.ToString()); Etime.dwMinute = uint.Parse(eTime.Minute.ToString()); Etime.dwSecond = uint.Parse(eTime.Second.ToString()); iFindfileHandle = NET_DVR_FindFile(m_lUserID, _iChannel, 0xff, ref Stime, ref Etime); if (iFindfileHandle == -1) { MessageBox.Show("没有电子标签录像文件,请注意"); return; } else { } NET_DVR_FIND_DATA FindNextFile = new NET_DVR_FIND_DATA(); Label_017C: switch (NET_DVR_FindNextFile(this.iFindfileHandle, ref FindNextFile)) { case 1000: { string[] str = { FindNextFile.sFileName.ToString() + ".mp4", FindNextFile.dwFileSize.ToString() + "MB" }; AddListViewItem(lvFlieList, str, Color.Black, Color.White); goto Label_017C; } case 1002: System.Threading.Thread.Sleep(5); goto Label_017C; } NET_DVR_FindClose(this.iFindfileHandle); m_lPlayHandle = NET_DVR_PlayBackByTime(m_lUserID, _iChannel, ref Stime, ref Etime, pBPlay.Handle); if (m_lPlayHandle == -1) { MessageBox.Show("录像文件回放失败!"); } int lpOutValue = -1; // 录像文件播放 if (!NET_DVR_PlayBackControl(m_lPlayHandle, 1, 0, ref lpOutValue)) { MessageBox.Show("文件播放失败!"); } // 返回文件的总时间 //NET_DVR_PlayBackControl(m_lPlayHandle, 17, 0, ref totalTime); _bytime = true; }
public static extern Int32 NET_DVR_Login_V30(string sDVRIP, Int32 wDVRPort, string sUserName, string sPassword, ref NET_DVR_DEVICEINFO_V30 lpDeviceInfo);
public bool VideoPlay() { if (VideoPlayState == Enum_VideoPlayState.InPlayState) { VideoClose(); } bool bolResult = false; NET_DVR_DEVICEINFO_V30 dev = new NET_DVR_DEVICEINFO_V30(); _intDVRHwd = NET_DVR_Login_V30(CurrentVideoInfo.DVSAddress, CurrentVideoInfo.DVSConnectPort, CurrentVideoInfo.UserName, CurrentVideoInfo.Password, ref dev); if (_intDVRHwd >= 0) { DebugRelevant.DebugLog(this, "Hik:设备登陆成功:" + CurrentVideoInfo.DVSAddress); DebugRelevant.DebugLog(this, "Hik:设备信息:" + JsonConvert.SerializeObject(dev)); dwAChanTotalNum = (uint)dev.byChanNum; if (dev.byIPChanNum > 0) { InfoIPChannel(); } else { for (iip = 0; iip < dwAChanTotalNum; iip++) { iChannelNum[iip] = iip + (int)dev.byStartChan; } } for (int i = 0; i < iChannelNum.Length; i++) { DebugRelevant.DebugLog(this, "Hik:设备通道信息:" + "Index[" + i + "]" + iChannelNum[i]); } NET_DVR_PREVIEWINFO lpPreviewInfo = new NET_DVR_PREVIEWINFO(); lpPreviewInfo.hPlayWnd = intptrPlayMain;//预览窗口 if (dev.byIPChanNum == 0) { lpPreviewInfo.lChannel = CurrentCameraInfo.Channel; //SaveNetLog("播放通道" + channel.ToString()); } else { lpPreviewInfo.lChannel = iChannelNum[CurrentCameraInfo.Channel - 1]; } if (CurrentVideoPlaySet.PlayStream == Enum_VideoStream.MainStream) { lpPreviewInfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推 videoStream = Enum_VideoStream.MainStream; } else { lpPreviewInfo.dwStreamType = 1;//码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推 videoStream = Enum_VideoStream.SubStream; } lpPreviewInfo.dwLinkMode = 0; //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP lpPreviewInfo.bBlocked = true; //0- 非阻塞取流,1- 阻塞取流 //NET_DVR_CLIENTINFO cli = new NET_DVR_CLIENTINFO(); //cli.lLinkMode = 0;// 设置连接方式 /* 最高位(31)为 0 表示主码流,为 1 表示子码流,0-30 位表示码流连接方式:0:TCP方式,1:UDP 方式,2:多播方式,3 - RTP方式,4—音视频分开 */ //cli.lChannel = channel + 32; //cli.hPlayWnd = playHandle; // 开始播放视频 //Thread.Sleep(50); DebugRelevant.DebugLog(this, "Hik:真实播放通道号:" + lpPreviewInfo.lChannel); IntPtr pUser = new IntPtr(); REALDATACALLBACK RealData = new REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数 //intRet = NET_DVR_RealPlay_V30(_intDVRHwd, ref cli, null, pUser, 1);//130814 intRet = NET_DVR_RealPlay_V40(_intDVRHwd, ref lpPreviewInfo, null, pUser);//140521 if (intRet != -1) { if (CurrentVideoPlaySet.VideoMonitorEnable) { OpenSound(); } VideoPlayCallback(new VideoPlayCallbackValue { evType = Enum_VideoPlayEventType.VideoPlay }); VideoPlayState = Enum_VideoPlayState.InPlayState; if (CurrentVideoPlaySet.VideoRecordEnable) { StartVideoRecord(CurrentVideoPlaySet.VideoRecordFilePath); } } else { VideoPlayCallback(new VideoPlayCallbackValue { evType = Enum_VideoPlayEventType.VideoPlayException }); } } else { VideoPlayCallback(new VideoPlayCallbackValue { evType = Enum_VideoPlayEventType.DevLoginException }); //登陆失败 bolResult = false; } return(bolResult); }
public void LoginResultCallBack(int lUserID, int dwResult, NET_DVR_DEVICEINFO_V30 lpDeviceInfo, IntPtr pUser) { Console.WriteLine("LoginResultCallBack"); }
public void InfoIPChannel() { NET_DVR_IPPARACFG_V40 m_struIpParaCfgV40 = new NET_DVR_IPPARACFG_V40(); NET_DVR_DEVICEINFO_V30 DeviceInfo = new NET_DVR_DEVICEINFO_V30(); NET_DVR_STREAM_MODE m_struStreamMode = new NET_DVR_STREAM_MODE(); NET_DVR_IPCHANINFO m_struChanInfo = new NET_DVR_IPCHANINFO(); NET_DVR_IPCHANINFO_V40 m_struChanInfoV40 = new NET_DVR_IPCHANINFO_V40(); uint dwSize = (uint)Marshal.SizeOf(m_struIpParaCfgV40); IntPtr ptrIpParaCfgV40 = Marshal.AllocHGlobal((Int32)dwSize); Marshal.StructureToPtr(m_struIpParaCfgV40, ptrIpParaCfgV40, false); uint dwReturn = 0; if (!NET_DVR_GetDVRConfig(_intDVRHwd, NET_DVR_GET_IPPARACFG_V40, 0, ptrIpParaCfgV40, dwSize, ref dwReturn)) { } else { m_struIpParaCfgV40 = (NET_DVR_IPPARACFG_V40)Marshal.PtrToStructure(ptrIpParaCfgV40, typeof(NET_DVR_IPPARACFG_V40)); for (iip = 0; iip < dwAChanTotalNum; iip++) { iChannelNum[iip] = iip + (int)DeviceInfo.byStartChan + 1; //iChannelNum[iip] = iip + (int)DeviceInfo.byStartChan; } byte byStreamType; for (iip = 0; iip < m_struIpParaCfgV40.dwDChanNum; iip++) { iChannelNum[iip + dwAChanTotalNum] = iip + (int)m_struIpParaCfgV40.dwStartDChan; byStreamType = m_struIpParaCfgV40.struStreamMode[iip].byGetStreamType; switch (byStreamType) { //目前NVR仅支持0- 直接从设备取流一种方式 NVR supports only one mode: 0- get stream from device directly case 0: dwSize = (uint)Marshal.SizeOf(m_struStreamMode); IntPtr ptrChanInfo = Marshal.AllocHGlobal((Int32)dwSize); Marshal.StructureToPtr(m_struIpParaCfgV40.struStreamMode[iip].uGetStream, ptrChanInfo, false); m_struChanInfo = (NET_DVR_IPCHANINFO)Marshal.PtrToStructure(ptrChanInfo, typeof(NET_DVR_IPCHANINFO)); Marshal.FreeHGlobal(ptrChanInfo); break; case 6: IntPtr ptrChanInfoV40 = Marshal.AllocHGlobal((Int32)dwSize); Marshal.StructureToPtr(m_struIpParaCfgV40.struStreamMode[iip].uGetStream, ptrChanInfoV40, false); m_struChanInfoV40 = (NET_DVR_IPCHANINFO_V40)Marshal.PtrToStructure(ptrChanInfoV40, typeof(NET_DVR_IPCHANINFO_V40)); //列出IP通道 List the IP channel //iIPDevID[i] = m_struChanInfoV40.wIPID - iGroupNo * 64 - 1; Marshal.FreeHGlobal(ptrChanInfoV40); break; default: break; } } } }
public static extern int NET_DVR_Login_V30(string sDVRIP, Int16 wDVRPort, string sUserName, string sPassword, NET_DVR_DEVICEINFO_V30 lpDeviceInfo);
static extern int NET_DVR_Login_V30(string cameraAddress, int cameraPort, string userName, string userPassword, out NET_DVR_DEVICEINFO_V30 cameraInfo);
private static extern int NET_DVR_Login_V30(string sDVRIP, int wDVRPort, string sUserName, string sPassword, ref NET_DVR_DEVICEINFO_V30 lpDeviceInfo);