Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }