protected override int StartFind(int userId, DateTime periodStart, DateTime periodEnd, int channel) { NET_DVR_FIND_PICTURE_PARAM findConditions = new NET_DVR_FIND_PICTURE_PARAM { lChannel = channel, byFileType = 0xff, // all struStartTime = new NET_DVR_TIME(periodStart), struStopTime = new NET_DVR_TIME(periodEnd) }; return(SdkHelper.InvokeSDK(() => NET_DVR_FindPicture(userId, ref findConditions))); }
private static extern int NET_DVR_FindPicture(int lUserID, ref NET_DVR_FIND_PICTURE_PARAM pFindParam);
public void NET_DVR_FindPictureTest() { PublicClassCurrency.VideoInfo vInfo = TestDataSource.HikDataSource.GetHikData2(); SDK_HikClientSDK.NET_DVR_DEVICEINFO_V30 DeviceInfo = new SDK_HikClientSDK.NET_DVR_DEVICEINFO_V30(); //登录设备 int m_lUserID = SDK_HikClientSDK.NET_DVR_Login_V30(vInfo.DVSAddress, vInfo.DVSConnectPort, vInfo.UserName, vInfo.Password, ref DeviceInfo); NET_DVR_FIND_PICTURE_PARAM para = new NET_DVR_FIND_PICTURE_PARAM(); para.dwSize = (uint)Marshal.SizeOf(para); para.lChannel = 1; para.byFileType = 0; DateTime tim = DateTime.Parse("2018-05-30 21:41:30"); //DateTime timStart = DateTime.Now.AddSeconds(-70); DateTime timStart = tim.AddSeconds(-70); SDK_HikClientSDK.NET_DVR_TIME Stime = new SDK_HikClientSDK.NET_DVR_TIME(); Stime.dwYear = uint.Parse(timStart.Year.ToString()); Stime.dwMonth = uint.Parse(timStart.Month.ToString()); Stime.dwDay = uint.Parse(timStart.Day.ToString()); Stime.dwHour = uint.Parse(timStart.Hour.ToString()); Stime.dwMinute = uint.Parse(timStart.Minute.ToString()); Stime.dwSecond = uint.Parse(timStart.Second.ToString()); para.struStartTime = Stime; //DateTime timEnd = DateTime.Now.AddSeconds(-60); DateTime timEnd = tim.AddSeconds(-60); SDK_HikClientSDK.NET_DVR_TIME Etime = new SDK_HikClientSDK.NET_DVR_TIME(); Etime.dwYear = uint.Parse(timEnd.Year.ToString()); Etime.dwMonth = uint.Parse(timEnd.Month.ToString()); Etime.dwDay = uint.Parse(timEnd.Day.ToString()); Etime.dwHour = uint.Parse(timEnd.Hour.ToString()); Etime.dwMinute = uint.Parse(timEnd.Minute.ToString()); Etime.dwSecond = uint.Parse(timEnd.Second.ToString()); para.struStopTime = Etime; int lFindHandle = SDK_HikClientSDK.NET_DVR_FindPicture(m_lUserID, ref para); NET_DVR_FIND_PICTURE lpFindData = new NET_DVR_FIND_PICTURE(); bool bolEnd = false; string strPath = @"C:\SHIKE_Video\9999\Pic"; int Temp_intCount = 1; DateTime Temp_tim = DateTime.Now.AddYears(-10); while (!bolEnd) { long lResult = NET_DVR_FindNextPicture(lFindHandle, ref lpFindData); switch (lResult) { case 1000: //下载图片 NET_DVR_TIME t = lpFindData.struTime; StringBuilder sb = new StringBuilder(); DateTime timPic = ConvertToDateTime(lpFindData.struTime); if (Temp_tim == timPic) { Temp_intCount++; } else { Temp_tim = timPic; Temp_intCount = 1; } string strFileName = lpFindData.sFileName; sb.Append(timPic.ToString("yyyyMMddHHmmss") + "_" + Temp_intCount + "_"); sb.Append(strFileName.Substring(0, strFileName.IndexOf("_"))); string strFilePath = strPath + "\\" + sb.ToString() + ".jpg"; NET_DVR_GetPicture(m_lUserID, lpFindData.sFileName, strFilePath); Thread.Sleep(30); break; case 1002: Thread.Sleep(30); break; case 1001: //未查找到 case 1003: //查找结束 case 1004: //查找文件异常 bolEnd = true; NET_DVR_CloseFindPicture(lFindHandle); break; } } //Thread.Sleep(5000); Assert.Fail(); }