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); } }
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); } }