/// <summary> /// 处理文件及记录 /// </summary> /// <param name="fileName"></param> /// <param name="station"></param> private async void Process(string fileName, CameraStationPresetPointDto preset) { //图片记录 PictureRepDto pic = new PictureRepDto(); pic.Serialnum = Guid.NewGuid().ToString(); pic.Type = "CameraStation"; pic.Title = DateTime.Now.ToString(CultureInfo.InvariantCulture); pic.Description = ""; pic.Url = Path.Combine(_picsPath, fileName); pic.Href = "CameraStation-pics" + fileName.Replace(_picsPath, "").Replace("\\", "/"); pic.CreateTime = DateTime.Now; await _pictureRepService.AddAsync(pic); //映射关系 CameraStationPicsDto fp = new CameraStationPicsDto(); fp.Serialnum = Guid.NewGuid().ToString(); fp.CameraStationsPresetSerialnum = preset.Serialnum;//预置点编码??? fp.PicSerialnum = pic.Serialnum; fp.CreateTime = DateTime.Now; await _cameraStationPicsService.AddAsny(fp); }
/// <summary> /// 获取摄像机上配置的预置点 /// </summary> /// <param name="userHandle"></param> /// <param name="camStation"></param> /// <returns></returns> private async Task <IEnumerable <CameraStationPresetPointDto> > GetCameraPresetPoints(int userHandle, CameraStationsDto camStation) { var cameraPreset = new CHCNetSDK.NET_DVR_GET_PRESET_NAMES(); Int32 dwSize = Marshal.SizeOf(typeof(CHCNetSDK.NET_DVR_GET_PRESET_NAMES)); IntPtr ptrNetCfg = Marshal.AllocHGlobal(dwSize); Marshal.StructureToPtr(cameraPreset, ptrNetCfg, false); UInt32 uiOutBufferSize = 0; bool bGetCfg = false; bGetCfg = CHCNetSDK.NET_DVR_GetDVRConfig(userHandle, 3383, 1, ptrNetCfg, dwSize, ref uiOutBufferSize); if (bGetCfg == false) { var errorCode = CHCNetSDK.NET_DVR_GetLastError(); LogHelper.Error("读取预置点失败 错误码{0}", errorCode); return(Enumerable.Empty <CameraStationPresetPointDto>()); } else { LogHelper.Debug("读取预置点成功"); } cameraPreset = (CHCNetSDK.NET_DVR_GET_PRESET_NAMES)Marshal.PtrToStructure(ptrNetCfg, typeof(CHCNetSDK.NET_DVR_GET_PRESET_NAMES)); //只取前3个 var points = cameraPreset.StructAs.AsEnumerable().Take(5); List <CameraStationPresetPointDto> list = new List <CameraStationPresetPointDto>(); for (int i = 0; i < points.Count(); i++) { var p = points.ElementAt(i); //var positon = p.wPresetNum; //设备返回的位置,只要不是0,即为处于使用状态 //if (!positon.Equals(0)) //{ var name = Encoding.Default.GetString(p.byName).Trim(); var preset = await _cameraStationPresetPointService.GetByPointAndIdAsny(camStation.Serialnum, i + 1); if (preset == null) { preset = new CameraStationPresetPointDto(); preset.Serialnum = Guid.NewGuid().ToString(); preset.CameraStationsSerialnum = camStation.Serialnum; preset.Name = name; preset.PresetPoint = i + 1; await _cameraStationPresetPointService.AddAsny(preset); } else { if (preset.Name.Equals(name)) { preset.Name = name; } await _cameraStationPresetPointService.UpdateAsny(preset); } list.Add(preset); //} //else //{ // CameraStationPresetPoint.DeleteByPosition(camStation.Serialnum, i + 1); //} } //释放非托管资源 Marshal.FreeHGlobal(ptrNetCfg); return(list); }