public CreateCameraResponse CreateCamera(CreateCameraRequest request)
        {
            try
              {
            if (request == null)
              throw new ArgumentNullException("request");

            CreateCameraResponse response = new CreateCameraResponse();

            response.Camera = CameraTranslator.Translate(
              Locator.Get<ICameraManager>().CreateCamera(
            CameraTranslator.Translate(request.Camera.Profile),
            CameraTranslator.Translate(request.Camera.Config)));

            return response;
              }
              catch (Exception ex)
              {
            throw new FaultException<DeviceConnectorServiceFault>(new DeviceConnectorServiceFault(ex.Message, ex), ex.Message);
              }
        }
Exemplo n.º 2
0
        public void CreateCamera(Camera camera, EventHandler<AsyncWorkerCallbackEventArgs<Camera>> callback)
        {
            if (camera == null)
            throw new ArgumentNullException("camera");

              try
              {
            AsyncWorkerHandle<Camera> handle = AsyncWorkerHelper.DoWork<Camera>(
              delegate(object sender, DoWorkEventArgs e)
              {
            CreateCameraRequest request = new CreateCameraRequest();
            request.Camera = new CameraData();

            request.Camera.Profile = new CameraProfileData();
            request.Camera.Profile.Id = camera.Id;
            request.Camera.Profile.Name = camera.Name;
            request.Camera.Profile.Description = camera.Description;
            request.Camera.Profile.Tags = camera.Tags;

            request.Camera.Profile.FilterType = FilterTypeData.None;
            switch (camera.VideoSourceDescription.SourceType)
            {
              case VideoSourceType.Mock:
                break;
              case VideoSourceType.LocalAVIFile:
                request.Camera.Profile.FilterType = FilterTypeData.LocalAVIFile;
                request.Camera.Profile.FilterId = camera.VideoSourceDescription.OriginalSourceString;
                break;
              case VideoSourceType.LocalCamera:
                request.Camera.Profile.FilterType = FilterTypeData.LocalCamera;
                request.Camera.Profile.FilterId = camera.VideoSourceDescription.OriginalSourceString;
                break;
              case VideoSourceType.LocalDesktop:
                request.Camera.Profile.FilterType = FilterTypeData.LocalDesktop;
                request.Camera.Profile.FilterId = camera.VideoSourceDescription.OriginalSourceString;
                break;
              case VideoSourceType.NetworkJPEG:
                request.Camera.Profile.FilterType = FilterTypeData.NetworkJPEG;
                request.Camera.Profile.FilterId = camera.VideoSourceDescription.OriginalSourceString;
                break;
              case VideoSourceType.NetworkMJPEG:
                request.Camera.Profile.FilterType = FilterTypeData.NetworkMJPEG;
                request.Camera.Profile.FilterId = camera.VideoSourceDescription.OriginalSourceString;
                break;
              default:
                break;
            }

            request.Camera.Config = new CameraConfigData()
            {
              FriendlyName = camera.VideoSourceDescription.FriendlyName,
              OriginalSourceString = camera.VideoSourceDescription.OriginalSourceString,
              SourceString = camera.VideoSourceDescription.SourceString,
              FrameInterval = camera.VideoSourceDescription.FrameInterval,
              FrameRate = camera.VideoSourceDescription.FrameRate,
              UserName = camera.VideoSourceDescription.UserName,
              Password = camera.VideoSourceDescription.Password,
              UserAgent = camera.VideoSourceDescription.UserAgent,
            };

            if (camera.VideoSourceDescription.Resolution != null)
            {
              request.Camera.Config.Resolution = new ResolutionData()
              {
                Width = camera.VideoSourceDescription.Resolution.Width,
                Height = camera.VideoSourceDescription.Resolution.Height
              };
            }

            // 默认请求超时时间为1分钟
            CreateCameraResponse response =
              ServiceProvider.GetService<IDeviceConnectorService, IDeviceConnectorCallbackService>(
              ViewModelLocator.ServiceClient,
              ViewModelLocator.SelectedService.HostName,
              ViewModelLocator.SelectedService.Uri.ToString()
              ).CreateCamera(request);
            if (response.Camera != null)
            {
              e.Result = camera;
            }
              },
              null, callback);
              }
              catch (Exception ex)
              {
            ExceptionHandler.Handle(ex);
              }
        }