Beispiel #1
0
 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");
     }
 }
Beispiel #2
0
 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;
         }
     }
 }
Beispiel #3
0
 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);
 }
Beispiel #6
0
        //[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;
        }