public void OnCameraDisconnected(object sender, USBEvent e) { string[] changedParts = WebcamManager.GetDeviceInfoFromPath(e.DevicePath); string[] selectedParts = WebcamManager.GetDeviceInfoFromPath(selectedCameraPath); if (string.Compare(changedParts[1], selectedParts[1], true) == 0 && string.Compare(changedParts[2], selectedParts[2], true) == 0) { selectedCameraConnected = false; ReleasePreviousBuffers(); WebcamManager.ReleaseInactiveCameras(); Logger.WriteLine("Selected camera disconnected"); ErrorLog.AddError(ErrorType.Warning, "Selected camera has been disconnected"); } }
protected override void OnDeleted() { if (webcambuffer != null && selectedCameraIndex != -1) { webcambuffer.UnregisterForImages(WebcamManager.GetCamera(selectedCameraIndex)); ReleasePreviousBuffers(); WebcamManager.ReleaseInactiveCameras(); if (callbacksRegistered) { WebcamManager.UnregisterWebcamConnectionEvent(OnCameraConnected); WebcamManager.UnregisterWebcamRemovalEvent(OnCameraDisconnected); callbacksRegistered = false; } } }
public void OnCameraConnected(object sender, USBEvent e) { if (!selectedCameraConnected) { Thread.Sleep(50); WebcamManager.RestartService(); selectedCameraIndex = LookforSelectedCamera(); if (selectedCameraIndex != -1) { Logger.WriteLine("Selected camera reconnected"); ErrorLog.AddError(ErrorType.Message, "Selected camera has been reconnected"); webcambuffer.RegisterForImages(WebcamManager.GetCamera(selectedCameraIndex)); WebcamManager.ReleaseInactiveCameras(); } } }
protected override void OnDeleted() { if (motionDetector != null && selectedCameraIndex != -1) { motionDetector.MotionDetected -= WebCamMotionDetected; ReleasePreviousDetectors(); WebcamManager.SetPropertyValueAuto(selectedCameraIndex, WebcamManager.CAMERA_PROPERTY.CAMERA_FOCUS); WebcamManager.SetPropertyValueAuto(selectedCameraIndex, WebcamManager.CAMERA_PROPERTY.CAMERA_ZOOM); WebcamManager.ReleaseInactiveCameras(); if (callbacksRegistered) { WebcamManager.UnregisterWebcamConnectionEvent(OnCameraConnected); WebcamManager.UnregisterWebcamRemovalEvent(OnCameraDisconnected); callbacksRegistered = false; } } }
public void Cleanup() { foreach (ImageViewer viewer in cameraPreviews) { for (int i = 0; i < viewer.ImageSource.SubscribedImagers.Count; i++) { viewer.ImageSource.UnregisterForImages(viewer.ImageSource.SubscribedImagers[i]); } } //foreach (ImageViewer viewer in mainView) //{ // for (int i = 0; i < viewer.ImageSource.SubscribedImagers.Count; i++) // viewer.ImageSource.UnregisterForImages(viewer.ImageSource.SubscribedImagers[i]); //} WebcamManager.ReleaseInactiveCameras(); WebcamManager.UnregisterWebcamConnectionEvent(OnCameraConnected); WebcamManager.UnregisterWebcamRemovalEvent(OnCameraDisconnected); }
//[MethodImpl(MethodImplOptions.Synchronized)] protected override void OnDisabled(DisabledEventArgs e) { if (!e.IsConfiguring) { if (faceDetector != null && selectedCameraIndex != -1) { faceDetector.FaceDetected -= WebCamFaceDetected; faceDetector.UnregisterForImages(WebcamManager.GetCamera(selectedCameraIndex)); ReleasePreviousDetectors(); WebcamManager.SetPropertyValueAuto(selectedCameraIndex, WebcamManager.CAMERA_PROPERTY.CAMERA_FOCUS); WebcamManager.SetPropertyValueAuto(selectedCameraIndex, WebcamManager.CAMERA_PROPERTY.CAMERA_ZOOM); WebcamManager.ReleaseInactiveCameras(); if (callbacksRegistered) { WebcamManager.UnregisterWebcamConnectionEvent(OnCameraConnected); WebcamManager.UnregisterWebcamRemovalEvent(OnCameraDisconnected); callbacksRegistered = false; } } } }
private void UpdatePanel() { if (WebcamManager.IsServiceRestartRequired()) { WebcamManager.RestartService(); } if (!callbacksRegistered) { WebcamManager.RegisterWebcamConnectionEvent(OnCameraConnected); WebcamManager.RegisterWebcamRemovalEvent(OnCameraDisconnected); callbacksRegistered = true; } numberConnectedCameras = WebcamManager.NumberConnectedCameras(); cameraList = new List <int>(); selectedCameraIndex = -1; int numAvailableCameras = 0; cameraPreviews.Clear(); //remove previous viewers //populate the camera list and find the one that is available and set it as current selection... if (numberConnectedCameras == 0) { ShowNoCamerasFoundPanel(); return; } for (int i = 0; i < numberConnectedCameras; i++) { //if (WebcamManager.StartCamera(i, captureWidth, captureHeight)) { ImageViewer viewer = new ImageViewer(); viewer.ViewerWidth = previewWidth; viewer.ViewerHeight = previewHeight; viewer.TopTitle = WebcamManager.GetCamera(i).WebCamName; if (WebcamManager.StartCamera(i, captureWidth, captureHeight)) { if (viewer.TopTitle == selectedCameraName || selectedCameraIndex == -1) { selectedCameraIndex = i; } viewer.SetImageSource(WebcamManager.GetCamera(i)); viewer.MouseEnter += Viewer_MouseEnter; viewer.MouseLeave += Viewer_MouseLeave; viewer.PreviewMouseLeftButtonUp += Viewer_MouseLeftButtonUp; ++numAvailableCameras; } else { viewer.ImageSource.Source = loadBitmap(Properties.Resources.CamBusyIcon); viewer.BottomTitle = "This webcam is already busy"; } cameraList.Add(i); cameraPreviews.Add(viewer); } } if (selectedCameraIndex != -1) { cameraPreviews[cameraList.IndexOf(selectedCameraIndex)].ViewerBorderColor = "LightGreen"; cameraPreviews[cameraList.IndexOf(selectedCameraIndex)].ViewerWidth = previewHeight + 16; cameraPreviews[cameraList.IndexOf(selectedCameraIndex)].ViewerHeight = cameraPreviews[cameraList.IndexOf(selectedCameraIndex)].ViewerWidth * 3 / 4; } //release inactive cameras so that they can be made available to other processes... WebcamManager.ReleaseInactiveCameras(); CameraReadiness = true; }