Beispiel #1
0
        private void OnRobotConnection(object sender, bool connected)
        {
            // When we connect, begin receiving the stream.
            if (connected)
            {
                // Get the available cameras
                AvailableCameras.Clear();

                /* Do not simply want to reassing the AvailableCameras list because that would cause
                 * for the change listener to not work.
                 */
                ObservableCollection <string> cameras = GetAvailableCameras();

                foreach (string camera in cameras)
                {
                    AvailableCameras.Add(camera);
                }

                // If we only have one camera, select it.
                if (AvailableCameras.Count == 1)
                {
                    cameraSelector.SelectedIndex = 0;
                }
            }
            // If not connected, disconnect the camera
            else
            {
                AvailableCameras.Clear();
                StopCamera();
            }
        }
Beispiel #2
0
        public void DoRefresh()
        {
            ObservableCollection<CameraModel> existingCameras = new ObservableCollection<CameraModel>();
            AvailableCameras.Clear();
            NewCamera = new CameraModel
            {
                Name = null,
                Design = true
            };
            NewCamerasDetected = false;

            ICameraService cameraService = new ClEyeService(new ConsoleService());
            int connectedCount = cameraService.GetConnectedCount();
            if (connectedCount > 0)
            {
                foreach (CameraViewModel cameraViewModel in SimpleIoc.Default.GetAllCreatedInstances<CameraViewModel>())
                {
                    existingCameras.Add(cameraViewModel.Camera);
                }
                
                for (int i = 0; i < connectedCount; i++)
                {
                    CameraModel tmp = new CameraModel();
                    tmp.TrackerId = i;
                    cameraService.Initialize(tmp);
                    if(existingCameras.Count > 0)
                    {
                        bool duplicate = false;
                        foreach (CameraModel sc in existingCameras)
                        {
                            if (tmp.GUID.Equals(sc.GUID))
                            {
                                duplicate = true;
                                break;
                            }
                        }
                        if (!duplicate) AvailableCameras.Add(tmp);
                    }
                    else
                    {
                        AvailableCameras.Add(tmp);
                    }
                    
                    cameraService.Destroy();
                }

                if (AvailableCameras.Count > 0)
                {
                    NewCamerasDetected = true;
                }
            }
        }
Beispiel #3
0
        public void Refresh()
        {
            AvailableCameras.Clear();

            if (_camControl == null)
            {
                return;
            }

            foreach (var cam in _camControl.GetVideoCaptureDevices())
            {
                AvailableCameras.Add(cam);
            }
        }
Beispiel #4
0
        /// <summary>
        /// Creates instances of all currently loaded camera implementations.
        /// Optionally finds all camera implementations in local and SDK folder first.
        /// </summary>
        /// <param name="scanForCameraDLLs">If enabled, all assemblies (.DLL files) in the local folder and the MetriCam2 SDK path are scanned.</param>
        /// <remarks>The MetriCam2 SDK path is read from the registry.</remarks>
        public void InitializeCameras(bool scanForCameraDLLs)
        {
            log.DebugFormat("InitializeCameras({0})", scanForCameraDLLs);
            if (scanForCameraDLLs)
            {
                log.Debug("Scanning for camera DLLs");
                LoadLocalDirectoryAssemblies();
                LoadRegistryDirectoryAssemblies();
            }

            AvailableCameras.Clear();
            foreach (string cameraTypeName in AvailableCameraTypeNames)
            {
                try
                {
                    Camera cam = GetCameraInstanceByName(cameraTypeName);
                    AvailableCameras.Add(cam);
                }
                catch (Exception ex)
                {
                    log.InfoFormat("Camera with TypeName '{0}' was not added due to an exception: {1}", cameraTypeName, ex.Message);
                }
            }
        }