示例#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();
            }
        }
示例#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;
                }
            }
        }
示例#3
0
        public void Refresh()
        {
            AvailableCameras.Clear();

            if (_camControl == null)
            {
                return;
            }

            foreach (var cam in _camControl.GetVideoCaptureDevices())
            {
                AvailableCameras.Add(cam);
            }
        }
示例#4
0
        /// <summary>
        /// Disable access to all camera types not listed in <paramref name="allowedCameraTypes"/>.
        /// </summary>
        /// <param name="allowedCameraTypes"></param>
        public void RestrictAvailableCameras(string[] allowedCameraTypes)
        {
            if (log.IsDebugEnabled)
            {
                log.DebugFormat("RestrictAvailableCameras with types: {0}", string.Join(", ", allowedCameraTypes));
            }

            // sanitize camera type names
            for (int i = 0; i < allowedCameraTypes.Length; i++)
            {
                allowedCameraTypes[i] = EnsureMetriCam2CameraPrefix(allowedCameraTypes[i]);
            }

            List <Camera> camerasToDeactivate = new List <Camera>();

            foreach (Camera cam in AvailableCameras)
            {
                string camName = EnsureMetriCam2CameraPrefix(cam.Name);

                if (!allowedCameraTypes.Contains(camName))
                {
                    camerasToDeactivate.Add(cam);
                }
            }
            if (log.IsDebugEnabled)
            {
                log.DebugFormat("    These cameras will be deactivated: {0}", string.Join(", ", camerasToDeactivate));
            }

            foreach (var item in camerasToDeactivate)
            {
                // Deselect cameras which are no longer available
                DeselectCamera(item);
                AvailableCameras.Remove(item);
            }
        }
示例#5
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);
                }
            }
        }
示例#6
0
 public void AddCameraByName(string cameraTypeName)
 {
     log.DebugFormat("AddCameraByName({0})", cameraTypeName);
     AvailableCameras.Add(GetCameraInstanceByName(cameraTypeName));
 }