private void btnTimeCorr_Click(object sender, EventArgs e) { CHCNetSDK.NET_DVR_TIME CurTime = new CHCNetSDK.NET_DVR_TIME(); CurTime.dwYear = dateTimePickerCorrection.Value.Year; CurTime.dwMonth = dateTimePickerCorrection.Value.Month; CurTime.dwDay = dateTimePickerCorrection.Value.Day; CurTime.dwHour = dateTimePickerCorrection.Value.Hour; CurTime.dwMinute = dateTimePickerCorrection.Value.Minute; CurTime.dwSecond = dateTimePickerCorrection.Value.Second; int dwSize = (int)Marshal.SizeOf(CurTime); IntPtr ptrCurTime = Marshal.AllocHGlobal(dwSize); Marshal.StructureToPtr(CurTime, ptrCurTime, true); Boolean res = CHCNetSDK.NET_DVR_SetDVRConfig(m_loginID, CHCNetSDK.NET_DVR_SET_TIMECFG, 0, ptrCurTime, (uint)dwSize); if (true == res) { g_formList.AddLog(iDevIndex, AcsDemoPublic.OPERATION_SUCC_T, "NET_DVR_SET_TIMECFG"); } else { g_formList.AddLog(iDevIndex, AcsDemoPublic.OPERATION_FAIL_T, "NET_DVR_SET_TIMECFG"); } Marshal.FreeHGlobal(ptrCurTime); }
private void btnTimeGet_Click(object sender, EventArgs e) { 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(m_lUserID, CHCNetSDK.NET_DVR_GET_TIMECFG, -1, ptrTimeCfg, (UInt32)nSize, ref dwReturn)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); strErr = "NET_DVR_GET_TIMECFG failed, error code= " + iLastErr; //获取设备时间失败,输出错误号 Failed to get time of the device and output the error code MessageBox.Show(strErr); } else { m_struTimeCfg = (CHCNetSDK.NET_DVR_TIME)Marshal.PtrToStructure(ptrTimeCfg, typeof(CHCNetSDK.NET_DVR_TIME)); textBoxYear.Text = Convert.ToString(m_struTimeCfg.dwYear); textBoxMonth.Text = Convert.ToString(m_struTimeCfg.dwMonth); textBoxDay.Text = Convert.ToString(m_struTimeCfg.dwDay); textBoxHour.Text = Convert.ToString(m_struTimeCfg.dwHour); textBoxMinute.Text = Convert.ToString(m_struTimeCfg.dwMinute); textBoxSecond.Text = Convert.ToString(m_struTimeCfg.dwSecond); } Marshal.FreeHGlobal(ptrTimeCfg); }
/// <summary> /// 双击放大视频 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ucSinglePanle_DoubleClick(object sender, EventArgs e) { int iTag = Convert.ToInt32(((Panel)sender).Tag); //this.Visible = false; m_fmFullScreen.Left = 0; m_fmFullScreen.Top = 0; m_fmFullScreen.Width = Screen.PrimaryScreen.Bounds.Width; m_fmFullScreen.Height = Screen.PrimaryScreen.Bounds.Height; if (m_bIsConnect) { switch (m_iCamType) { case 1: //自己api m_fmFullScreen.Visible = true; m_fmFullScreen.ChangeHandle(m_lHandle, ucSinglePanle.Handle, m_iCamType); break; case 2: //海康api m_fmFullScreen.Visible = true; m_fmFullScreen.StartPlayHik(m_iLoginHandle, m_sStartTime, m_sEndTime, m_iChannel, m_iCamType); string sPlayTime = Convert.ToString(Convert.ToUInt64(GetFilePlayTimeHik()) + (Convert.ToUInt64(GetCurrentPlayTime()) - 10)); CHCNetSDK.NET_DVR_TIME oPlayTime = GetTimeObjectHik(sPlayTime); Thread.Sleep(800); m_fmFullScreen.SetPlayPlanHik(oPlayTime); break; } } }
/// <summary> /// 设备自动校时 /// </summary> /// <param name="m_lUserID">设备登录成功后返回的ID</param> /// <returns></returns> public static bool TimingSetByAuto(Int32 m_lUserID) { CHCNetSDK.NET_DVR_TIME m_struTimeCfg = new CHCNetSDK.NET_DVR_TIME(); m_struTimeCfg.dwYear = (uint)DateTime.Now.Year; m_struTimeCfg.dwMonth = (uint)DateTime.Now.Month; m_struTimeCfg.dwDay = (uint)DateTime.Now.Day; m_struTimeCfg.dwHour = (uint)DateTime.Now.Hour; m_struTimeCfg.dwMinute = (uint)DateTime.Now.Minute; m_struTimeCfg.dwSecond = (uint)DateTime.Now.Second; Int32 nSize = Marshal.SizeOf(m_struTimeCfg); IntPtr ptrTimeCfg = Marshal.AllocHGlobal(nSize); Marshal.StructureToPtr(m_struTimeCfg, ptrTimeCfg, false); if (!CHCNetSDK.NET_DVR_SetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_SET_TIMECFG, -1, ptrTimeCfg, (UInt32)nSize)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); strErr = "NET_DVR_SET_TIMECFG failed, error code= " + iLastErr; //设置时间失败,输出错误号 Failed to set the time of device and output the error code Console.WriteLine(strErr); return(false); } else { Console.WriteLine("校时成功!"); return(true); } Marshal.FreeHGlobal(ptrTimeCfg); }
/// <summary> /// 修改DVR系统时间 /// </summary> public bool SyncDateTime() { bool rtn = false; CHCNetSDK.NET_DVR_TIME time = new CHCNetSDK.NET_DVR_TIME(); UInt32 dwReturn = 0; Int32 nSize = Marshal.SizeOf(time); IntPtr ptrTimeCfg = Marshal.AllocHGlobal(nSize); Marshal.StructureToPtr(time, ptrTimeCfg, false); if (CHCNetSDK.NET_DVR_GetDVRConfig(_userID, CHCNetSDK.NET_DVR_GET_TIMECFG, int.Parse(_cameraCfg.Channel), ptrTimeCfg, (UInt32)nSize, ref dwReturn)) { time = (CHCNetSDK.NET_DVR_TIME)Marshal.PtrToStructure(ptrTimeCfg, typeof(CHCNetSDK.NET_DVR_TIME)); Marshal.FreeHGlobal(ptrTimeCfg); time.dwYear = (uint)DateTime.Now.Year; time.dwMonth = (uint)DateTime.Now.Month; time.dwDay = (uint)DateTime.Now.Day; time.dwHour = (uint)DateTime.Now.Hour; time.dwMinute = (uint)DateTime.Now.Minute; time.dwSecond = (uint)DateTime.Now.Second; Int32 nSize1 = Marshal.SizeOf(time); IntPtr ptrShowStrCfg1 = Marshal.AllocHGlobal(nSize1); Marshal.StructureToPtr(time, ptrShowStrCfg1, false); if (CHCNetSDK.NET_DVR_SetDVRConfig(_userID, CHCNetSDK.NET_DVR_SET_TIMECFG, int.Parse(_cameraCfg.Channel), ptrShowStrCfg1, (UInt32)nSize1)) { rtn = true; } Marshal.FreeHGlobal(ptrShowStrCfg1); } return(rtn); }
public OResult <DateTime> GetPlayBackOsdTime() { try { if (_playbackHandle < 0) { return(new OResult <DateTime>(DateTime.MinValue, "未找到的视频")); } var lpOsdTime = new CHCNetSDK.NET_DVR_TIME(); var succ = CHCNetSDK.NET_DVR_GetPlayBackOsdTime(_playbackHandle, ref lpOsdTime); if (!succ) { return(new OResult <DateTime>(DateTime.MinValue, HkvsErrorCode.GetLastErrorCode(), $"获取OSD时间失败:{HkvsErrorCode.GetLastErrorMessage()}")); } var dt = new DateTime((Int32)lpOsdTime.dwYear, (Int32)lpOsdTime.dwMonth, (Int32)lpOsdTime.dwDay, (Int32)lpOsdTime.dwHour, (Int32)lpOsdTime.dwMinute, (Int32)lpOsdTime.dwSecond); return(new OResult <DateTime>(dt)); } catch (Exception ex) { return(new OResult <DateTime>(DateTime.MinValue, ex)); } }
private void UpDvrDate(CHCNetSDK.NET_DVR_TIME t0, ref CHCNetSDK.NET_DVR_TIME t) { t.dwYear = t0.dwYear; t.dwMonth = t0.dwMonth; t.dwDay = t0.dwDay; t.dwHour = t0.dwHour; t.dwMinute = t0.dwMinute; t.dwSecond = t0.dwSecond; }
private void UpDvrDate(DateTime d, ref CHCNetSDK.NET_DVR_TIME t) { t.dwYear = (uint)d.Year; t.dwMonth = (uint)d.Month; t.dwDay = (uint)d.Day; t.dwHour = (uint)d.Hour; t.dwMinute = (uint)d.Minute; t.dwSecond = (uint)d.Second; }
private CHCNetSDK.NET_DVR_TIME m_oPlayTime; //播放时间 public fm_FullScreen() { InitializeComponent(); m_pOldHandle = IntPtr.Zero; m_iLoginHandle = -1; m_iChannel = -1; m_iType = -1; m_iHandle = -1; m_oPlayTime = new CHCNetSDK.NET_DVR_TIME(); }
/// <summary> /// 得到播放的总时间 /// </summary> /// <returns>返回时间戳</returns> //public string GetTotalPlayTimeHik() //{ // string oTime = GetFilePlayTimeHik(); // return oTime; //} /// <summary> /// 设置海康录像播放进度 /// </summary> /// <param name="_iPlan">播放进度</param> public void SetPlayPlanHik(string _sPlayTime) { CHCNetSDK.NET_DVR_TIME _oPlanTime = GetTimeObjectHik(_sPlayTime); IntPtr pIn = Marshal.AllocHGlobal(Marshal.SizeOf(_oPlanTime)); Marshal.StructureToPtr(_oPlanTime, pIn, true); uint pInLeng = (uint)Marshal.SizeOf(pIn); uint pOutLeng = 0; CHCNetSDK.NET_DVR_PlayBackControl_V40(m_iPlayHandle, (uint)EHikControlInfo.NET_DVR_PLAYSETTIME, pIn, pInLeng, IntPtr.Zero, ref pOutLeng); }
public DateTime GetReplayOsdDateTime(int playHandle) { DateTime osdDateTime = DateTime.MinValue; CHCNetSDK.NET_DVR_TIME nvrOsdTime = new CHCNetSDK.NET_DVR_TIME(); bool isSuccessful = CHCNetSDK.NET_DVR_GetPlayBackOsdTime(playHandle, ref nvrOsdTime); if (isSuccessful) { osdDateTime = nvrOsdTime.ToDateTime(); } return(osdDateTime); }
/// <summary> /// 返回海康时间结构体 /// </summary> /// <param name="_sTime">要转换为结构体的时间字符串</param> /// <returns>返回一个CHCNetSDK.NET_DVR_TIME 对象</returns> public CHCNetSDK.NET_DVR_TIME GetTimeObjectHik(string _sTime) { System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区 DateTime oStartTime = startTime.AddSeconds(Convert.ToDouble(_sTime)); CHCNetSDK.NET_DVR_TIME oRetTime = new CHCNetSDK.NET_DVR_TIME(); oRetTime.dwYear = (uint)oStartTime.Year; oRetTime.dwMonth = (uint)oStartTime.Month; oRetTime.dwDay = (uint)oStartTime.Day; oRetTime.dwHour = (uint)oStartTime.Hour; oRetTime.dwMinute = (uint)oStartTime.Minute; oRetTime.dwSecond = (uint)oStartTime.Second; return(oRetTime); }
/// <summary> /// 设置海康录像播放进度 /// </summary> /// <param name="_iPlan">播放进度</param> public void SetPlayPlanHik(CHCNetSDK.NET_DVR_TIME _oPlayTime) { IntPtr pIn = Marshal.AllocHGlobal(Marshal.SizeOf(_oPlayTime)); Marshal.StructureToPtr(_oPlayTime, pIn, true); uint pInLeng = (uint)Marshal.SizeOf(pIn); uint pOutLeng = 0; if (m_iHandle >= 0) { CHCNetSDK.NET_DVR_PlayBackControl_V40(m_iHandle, (uint)EHikControlInfo.NET_DVR_PLAYSETTIME, pIn, pInLeng, IntPtr.Zero, ref pOutLeng); } Marshal.FreeHGlobal(pIn); }
/// <summary> /// 回放控制 /// </summary> /// <param name="session"></param> /// <param name="cmd"></param> /// <param name="parm"></param> /// <returns></returns> int NvrInterface.playBackCtl(int session, PLAY_BACK_CMD cmd, Object parm) { uint iOutValue = 0; switch (cmd) { case PLAY_BACK_CMD.START: // 播放 CHCNetSDK.NET_DVR_PlayBackControl_V40(session - 1, CHCNetSDK.NET_DVR_PLAYSTART, IntPtr.Zero, 0, IntPtr.Zero, ref iOutValue); break; case PLAY_BACK_CMD.PAUSE: // 暂停 CHCNetSDK.NET_DVR_PlayBackControl_V40(session - 1, CHCNetSDK.NET_DVR_PLAYPAUSE, IntPtr.Zero, 0, IntPtr.Zero, ref iOutValue); break; case PLAY_BACK_CMD.RESUME: // 恢复 CHCNetSDK.NET_DVR_PlayBackControl_V40(session - 1, CHCNetSDK.NET_DVR_PLAYRESTART, IntPtr.Zero, 0, IntPtr.Zero, ref iOutValue); break; case PLAY_BACK_CMD.POSITION: // 定位 DateTime pTime = (DateTime)parm; CHCNetSDK.NET_DVR_TIME pTimeS = new CHCNetSDK.NET_DVR_TIME(); uint inSize = (uint)Marshal.SizeOf(pTimeS); pTimeS.dwYear = (uint)pTime.Year; pTimeS.dwMonth = (uint)pTime.Month; pTimeS.dwDay = (uint)pTime.Day; pTimeS.dwHour = (uint)pTime.Hour; pTimeS.dwMinute = (uint)pTime.Minute; pTimeS.dwSecond = (uint)pTime.Second; IntPtr buffer = Marshal.AllocHGlobal(Marshal.SizeOf(pTimeS)); Marshal.StructureToPtr(pTimeS, buffer, false); CHCNetSDK.NET_DVR_PlayBackControl_V40(session - 1, CHCNetSDK.NET_DVR_PLAYSETTIME, buffer, inSize, IntPtr.Zero, ref iOutValue); Marshal.FreeHGlobal(buffer); break; } return(0); }
/// <summary> /// 设备手动校时 /// </summary> /// <param name="m_struTimeCfg">时间结构体</param> /// <param name="m_lUserID">设备登录成功后返回的ID</param> /// <returns></returns> public static bool TimimgSetByParam(CHCNetSDK.NET_DVR_TIME m_struTimeCfg, Int32 m_lUserID) { Int32 nSize = Marshal.SizeOf(m_struTimeCfg); IntPtr ptrTimeCfg = Marshal.AllocHGlobal(nSize); Marshal.StructureToPtr(m_struTimeCfg, ptrTimeCfg, false); if (!CHCNetSDK.NET_DVR_SetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_SET_TIMECFG, -1, ptrTimeCfg, (UInt32)nSize)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); strErr = "NET_DVR_SET_TIMECFG failed, error code= " + iLastErr; //设置时间失败,输出错误号 Failed to set the time of device and output the error code Console.WriteLine(strErr); return(false); } else { Console.WriteLine("校时成功!"); return(true); } Marshal.FreeHGlobal(ptrTimeCfg); }
private void button1_Click(object sender, EventArgs e) { CHCNetSDK.NET_DVR_TIME DevTime = new CHCNetSDK.NET_DVR_TIME(); int dwSize = (int)Marshal.SizeOf(DevTime); IntPtr PtrDevTime = Marshal.AllocHGlobal(dwSize); Marshal.StructureToPtr(DevTime, PtrDevTime, true); uint dwReturn = 0; Boolean res = CHCNetSDK.NET_DVR_GetDVRConfig(m_loginID, CHCNetSDK.NET_DVR_GET_TIMECFG, 0, PtrDevTime, (uint)dwSize, ref dwReturn); DevTime = (CHCNetSDK.NET_DVR_TIME)Marshal.PtrToStructure(PtrDevTime, typeof(CHCNetSDK.NET_DVR_TIME)); if (true == res) { g_formList.AddLog(iDevIndex, AcsDemoPublic.OPERATION_SUCC_T, "NET_DVR_GET_TIMECFG"); textBoxDevTime.Text = DevTime.dwYear.ToString() + ":" + DevTime.dwMonth.ToString() + ":" + DevTime.dwDay.ToString() + ":" + DevTime.dwHour.ToString() + ":" + DevTime.dwMinute.ToString() + ":" + DevTime.dwSecond.ToString(); } else { g_formList.AddLog(iDevIndex, AcsDemoPublic.OPERATION_FAIL_T, "NET_DVR_GET_TIMECFG"); } Marshal.FreeHGlobal(PtrDevTime); }
public static bool TimeSetBySuperior(string Year, string Month, string Day, string Hour, string Minute, string Second, string IP) { CHCNetSDK.NET_DVR_TIME m_struTimeCfg = new CHCNetSDK.NET_DVR_TIME(); try { m_struTimeCfg.dwYear = Convert.ToUInt16(Year); m_struTimeCfg.dwMonth = Convert.ToUInt16(Month); m_struTimeCfg.dwDay = Convert.ToUInt16(Day); m_struTimeCfg.dwHour = Convert.ToUInt16(Hour); m_struTimeCfg.dwMinute = Convert.ToUInt16(Minute); m_struTimeCfg.dwSecond = Convert.ToUInt16(Second); int m_UserID = -1; if (MediaData.Device_UserID_Alarm.ContainsKey(IP)) { m_UserID = MediaData.Device_UserID_Alarm[IP].UserID; } bool temp = TimimgSetByParam(m_struTimeCfg, m_UserID); return(temp); } catch (Exception) { return(false); } }
/// <summary> /// 设置播放时间 /// </summary> /// <param name="_sPlayTime">播放时间</param> public void SetPlayTime(CHCNetSDK.NET_DVR_TIME _oPlayTime) { m_oPlayTime = _oPlayTime; }
private DateTime GetDate(CHCNetSDK.NET_DVR_TIME t) { return(new DateTime((int)t.dwYear, (int)t.dwMonth, (int)t.dwDay, (int)t.dwHour, (int)t.dwMinute, (int)t.dwSecond)); }
/// <summary> /// 得到回放录像osd时间 /// </summary> public CHCNetSDK.NET_DVR_TIME GetReplayOSDTime() { CHCNetSDK.NET_DVR_TIME oOSDTime = new CHCNetSDK.NET_DVR_TIME(); CHCNetSDK.NET_DVR_GetPlayBackOsdTime(m_iLoginHandle, ref oOSDTime); return(oOSDTime); }
private int GetSeconds(CHCNetSDK.NET_DVR_TIME t) { return((int)(t.dwHour * 3600 + t.dwMinute * 60 + t.dwSecond)); }