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> /// 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)); }