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(); } }
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; } } }
public void Refresh() { AvailableCameras.Clear(); if (_camControl == null) { return; } foreach (var cam in _camControl.GetVideoCaptureDevices()) { AvailableCameras.Add(cam); } }
/// <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); } }
/// <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); } } }
public void AddCameraByName(string cameraTypeName) { log.DebugFormat("AddCameraByName({0})", cameraTypeName); AvailableCameras.Add(GetCameraInstanceByName(cameraTypeName)); }