private void ConnectCamera(CameraDeviceInfo cameraDeviceInfo) { DisposeCamera(); switch (cameraDeviceInfo.SelectedStreamingFormat) { case ImageFormat.FlirFileFormat: _camera = new ThermalCamera(); break; case ImageFormat.Argb: _camera = new VideoOverlayCamera(); break; default: throw new ArgumentOutOfRangeException(); } _camera.ConnectionStatusChanged += _camera_ConnectionStatusChanged; _camera.GetImage().Changed += Image_Changed; _camera.Connect(cameraDeviceInfo); if (_camera.Recorder == null && _recorder != null) { _recorder.Dispose(); _recorder = null; } if (_recorder != null) { if (!_recorder.IsDisposed) { _recorder.Initialize(_camera); } } recorderToolStripMenuItem.Enabled = _camera.Recorder != null; _timerRefreshUi.Start(); }
Camera GetCurrentModel(CameraDeviceInfo cameraInfo) { if (cameraInfo.IpCameraInfo != null) { foreach (var camInfo in ConnectModel.CameraList) { if (camInfo.CameraInfo != null) { if (camInfo.CameraInfo.Equals(cameraInfo.IpCameraInfo.Uri.ToString()) || String.Format("{0}/", camInfo.CameraInfo).Equals(cameraInfo.IpCameraInfo.Uri.ToString()) || String.Format("http://{0}/", camInfo.CameraInfo).Equals(cameraInfo.IpCameraInfo.Uri.ToString())) { return(camInfo); } } } } else if (cameraInfo.WebCameraInfo != null) { foreach (var camInfo in ConnectModel.CameraList) { if (camInfo.DeviceInfo != null) { if (camInfo.CameraInfo.Equals(cameraInfo.WebCameraInfo.Name)) { return(camInfo); } } } } return(null); }
private void AddDevice(CameraDeviceInfo cameraDeviceInfo) { // A camera have been found, add the camera to the list control. // One camera might support multiple streaming formats, iterate and add... foreach (var streamingFormat in cameraDeviceInfo.StreamingFormats) { // This can be filtered if your only want 16-bit cameras or Video overlay. //if (streamingFormat != ImageFormat.FlirFileFormat) //{ // continue; //} var info = new CameraDeviceInfo(cameraDeviceInfo); var item = new ListViewItem(string.Format("{0}", cameraDeviceInfo.Name)); if (cameraDeviceInfo.IpSettings != null) { item.SubItems.Add(cameraDeviceInfo.IpSettings.IpAddress); item.SubItems.Add(cameraDeviceInfo.IpSettings.IsWireless ? "Yes" : "No"); } else { item.SubItems.Add("N/A"); // IP item.SubItems.Add("N/A"); // WiFi } info.SelectedStreamingFormat = streamingFormat; item.SubItems.Add(streamingFormat.ToString()); item.Tag = info; listViewDevices.Items.Add(item); } }
// Connect/disconnect camera public void ConnectCamera(CameraDeviceInfo cameraDeviceInfo) { _logger.Debug("METEC Camera", String.Format("Camera connection info - {0}", cameraDeviceInfo)); DisposeCamera(); switch (cameraDeviceInfo.SelectedStreamingFormat) { case ImageFormat.FlirFileFormat: _camera = new ThermalCamera(); break; case ImageFormat.Argb: _camera = new VideoOverlayCamera(); break; default: throw new ArgumentOutOfRangeException(); } _camera.ConnectionStatusChanged += _camera_ConnectionStatusChanged; _camera.GetImage().Changed += _camera_NewImage; _camera.DeviceError += _camera_DeviceError; _camera.Connect(cameraDeviceInfo); Recorder = _camera.Recorder; Focus = _camera.RemoteControl.Focus; RemoteSettings = _camera.RemoteControl.CameraSettings; GeoLocation = _camera.RemoteControl.GeographicLocation; Settings = new FLIRCameraSettings(_camera, Index); }
// Connect to camera public void ConnectCamera(CameraDeviceInfo cameraDeviceInfo, int index) { _cameras.Add(index, new FLIRCamera(cameraDeviceInfo, index)); _cameras[index].ImageChanged += _camera_ImageChanged; _cameras[index].ConnectionStatusChanged += _camera_ConnectionStatusChanged; _cameras[index].DeviceError += _camera_DeviceError; _logger.Info("Camera Manager", String.Format("Connecting to camera: {0}", index)); }
void IPCamera_DeviceDiscovered(object sender, DiscoveryEventArgs e) { var deviceInfo = new CameraDeviceInfo { IpCameraInfo = new IPVideoDeviceInfo(e.Device) }; AddDeviceToList(deviceInfo); }
void OnDeviceAdded(CameraDeviceInfo info) { var handler = DeviceAdded; if (handler != null) { handler(this, new DeviceAddedEventArgs(info)); } }
private static void ConnectCamera(CameraDeviceInfo info) { Log.Info("Stopping discovery"); _discovery.Stop(); Log.Info($"Connecting to camera: {info.Name}"); _camera = new ThermalGigabitCamera(); _camera.Connect(info); CorrectCameraFound.SetResult(_camera); }
private void RemoveDevice(CameraDeviceInfo cameraDeviceInfo) { foreach (ListViewItem item in listViewDevices.Items) { var device = item.Tag as CameraDeviceInfo; if (device != null && device.DeviceIdentifier == cameraDeviceInfo.DeviceIdentifier) { listViewDevices.Items.Remove(item); } } }
void DiscoverUsbDevices() { var webCameras = WebCamera.GetDevices(); foreach (var camera in webCameras) { var deviceInfo = new CameraDeviceInfo { WebCameraInfo = camera }; AddDeviceToList(deviceInfo); } }
void SelectCameraFromListCtrl() { var items = listViewDevices.SelectedItems; if (items.Count <= 0) { return; } var lv = items[0]; var device = lv.Tag as CameraDeviceInfo; SelectedCameraDevice = device; DialogResult = DialogResult.OK; Close(); }
private void buttonConnect_Click(object sender, EventArgs e) { buttonConnectCamera.Enabled = false; if (flirConnectStatus == false) { bool deviceFound = false; List <CameraDeviceInfo> deviceList = new List <CameraDeviceInfo>(); deviceList = discovery.Start(5); foreach (var _device in deviceList) { if (_device.IsFlirCamera == true && (_device.CameraDeviceType == Interface.Usb || _device.CameraDeviceType == Interface.Usb3 || _device.CameraDeviceType == Interface.Network)) { device = _device; deviceFound = true; break; } } discovery.Stop(); if (!deviceFound) { connectionStatus.Text = "No Device"; buttonConnectCamera.Enabled = true; return; } cam.GetImage().Changed += cam_ImageChanged; cam.ConnectionStatusChanged += cam_ConnectionStatusChanged; cam.Connect(device); } else { if (cam.Recorder.Status == RecorderState.Recording || cam.Recorder.Status == RecorderState.Stopped) { cam.Recorder.Stop(); } cam.Disconnect(); while (cam.ConnectionStatus != ConnectionStatus.Disconnected) { ; } cam.GetImage().Changed -= cam_ImageChanged; cam.ConnectionStatusChanged -= cam_ConnectionStatusChanged; } buttonConnectCamera.Enabled = true; }
void AddCamera() { if (String.IsNullOrEmpty(CameraUrl)) { return; } var ipCamera = new IpCameraEngine(CameraUrl, UserName, Password); if (!(CameraUrl.Trim().ToUpper().StartsWith("HTTP://") || CameraUrl.Trim().ToUpper().StartsWith("RTSP://"))) { CameraUrl = String.Format("http://{0}", CameraUrl); } var ipCameraInfo = new IPVideoDeviceInfo { Uri = new Uri(CameraUrl) }; var savedCamera = new SavedCamera { DeviceInfo = new CameraDeviceInfo { IpCameraInfo = ipCameraInfo }, Camera = ipCamera, UserName = UserName, Password = Password }; var deviceInfo = new CameraDeviceInfo { IpCameraInfo = ipCameraInfo }; ConnectModel.CameraList.Add(ipCamera); ConnectModel.SavedCameras.Add(savedCamera); ConnectModel.DeviceList.Add(deviceInfo); OnCameraAdded(ipCamera); }
Camera CreateCamera(CameraDeviceInfo device) { try { if (device.SelectedStreamingFormat == ImageFormat.Argb) { return(new VideoOverlayCamera(true)); } if (device.SelectedStreamingFormat == ImageFormat.FlirFileFormat) { return(new ThermalCamera(true)); } } catch (Exception e) { MessageBox.Show("Missing Atlas dependencies:" + e.Message); Close(); } throw new ArgumentOutOfRangeException("Unsupported streaming format"); }
private void AddDevice(CameraDeviceInfo cameraDeviceInfo) { foreach (var streamingFormat in cameraDeviceInfo.StreamingFormats) { var info = new CameraDeviceInfo(cameraDeviceInfo); var item = new ListViewItem(string.Format("{0}", cameraDeviceInfo.Name)); if (cameraDeviceInfo.IpSettings != null) { item.SubItems.Add(cameraDeviceInfo.IpSettings.IpAddress); item.SubItems.Add(cameraDeviceInfo.IpSettings.IsWireless ? "Yes" : "No"); } else { item.SubItems.Add("N/A"); // IP item.SubItems.Add("N/A"); // WiFi } info.SelectedStreamingFormat = streamingFormat; item.SubItems.Add(streamingFormat.ToString()); item.Tag = info; listViewDevices.Items.Add(item); } }
void AddDeviceToList(CameraDeviceInfo info) { if (SelectedDevice == null) { SelectedDevice = info; OnPropertyChanged("SelectedDevice"); } if (info.IpCameraInfo != null) { foreach (var cameraDeviceInfo in SavedCameras) { if (String.IsNullOrEmpty(cameraDeviceInfo.Camera.DeviceInfo)) { continue; } if (cameraDeviceInfo.DeviceInfo == null || cameraDeviceInfo.DeviceInfo.IpCameraInfo == null || info.IpCameraInfo.Uri == null) { continue; } if (cameraDeviceInfo.DeviceInfo.IpCameraInfo.Uri.ToString().Equals(info.IpCameraInfo.Uri.ToString())) { return; } } } else { foreach (var cameraDeviceInfo in SavedCameras) { if (String.IsNullOrEmpty(cameraDeviceInfo.Camera.DeviceInfo)) { continue; } if (cameraDeviceInfo.DeviceInfo == null || cameraDeviceInfo.DeviceInfo.WebCameraInfo == null) { continue; } if (cameraDeviceInfo.DeviceInfo.WebCameraInfo.Name.Equals(info.WebCameraInfo.Name)) { return; } } } DeviceList.Add(info); try { OnDeviceAdded(info); } catch (Exception ex) { } OnPropertyChanged("DeviceList"); }
private async void connectCamera() { buttonConnectCamera.Enabled = false; if (flirConnectStatus == false) { bool deviceFound = false; List <CameraDeviceInfo> deviceList = new List <CameraDeviceInfo>(); deviceList = discovery.Start(5); foreach (var _device in deviceList) { if (_device.IsFlirCamera == true && (_device.CameraDeviceType == Interface.Usb || _device.CameraDeviceType == Interface.Usb3 || _device.CameraDeviceType == Interface.Network)) { device = _device; deviceFound = true; break; } } discovery.Stop(); if (!deviceFound) { connectionStatus.Text = "No Device"; buttonConnectCamera.Enabled = true; return; } cam.ThermalImage.Changed += cam_ImageChanged; cam.Recorder.RecorderStatusChanged += cam_RecorderStatusChanged; cam.ConnectionStatusChanged += cam_ConnectionStatusChanged; cam.RemoteControl.CommandExecuted += cam_CommandExecuted; cam.Connect(device); } else { await camLock.WaitAsync(); RecorderState status = cam.Recorder.Status; if (camLock.CurrentCount == 0) { camLock.Release(); } if (status == RecorderState.Recording || status == RecorderState.Paused) { Command(() => cam.Recorder.Stop(), true); await camLock.WaitAsync(); if (camLock.CurrentCount == 0) { camLock.Release(); } } cam.Disconnect(); while (flirConnectStatus) { await Task.Delay(100); } cam.ThermalImage.Changed -= cam_ImageChanged; cam.Recorder.RecorderStatusChanged -= cam_RecorderStatusChanged; cam.ConnectionStatusChanged -= cam_ConnectionStatusChanged; cam.RemoteControl.CommandExecuted -= cam_CommandExecuted; } buttonConnectCamera.Enabled = true; }
private void picture_form_Load(object sender, EventArgs e) { // cameraControl1.Stop(); //cameraControl2.Stop(); // MessageBox.Show(abc.ToString()); // MessageBox.Show(xyz.ToString()); //MessageBox.Show(cameraControl1.Device.Name.ToString()); abc = CameraControl.GetDevices().FirstOrDefault(); xyz = CameraControl.GetDevices().LastOrDefault(); if (abc != xyz) { ArticleCamera.Device = new CameraDevice(abc); ArticleCamera.Start(); cameraControl1.Device = new CameraDevice(xyz); cameraControl1.Start(); } else { cameraControl1.Start(); ArticleCamera.Start(); } #region // Extra for Camera Research & learning /* CameraDeviceInfo cdi = CameraControl.GetDevices().Where(c => c.Name == "USB2.0 PC CAMERA").FirstOrDefault(); * if (cdi != null) * { * * cameraControl1.Device = new CameraDevice(new DevExpress.Data.Camera.CameraDeviceInfo(cdi.MonikerString, cdi.Name)); * cameraControl1.Start(); * }*/ /* if (!DesignMode) * { * if (!DesignMode) * { * comboBoxCameras.Items.Clear(); * foreach (Camera cam in CameraService.AvailableCameras) * comboBoxCameras.Items.Add(cam); * * if (comboBoxCameras.Items.Count > 0) * comboBoxCameras.SelectedIndex = 0; * } * } * * * //start * * * * // Early return if we've selected the current camera * if (_frameSource != null && _frameSource.Camera == comboBoxCameras.SelectedItem) * return; * * thrashOldCamera(); * startCapturing();*/ }
public FLIRCamera(CameraDeviceInfo cameraDeviceInfo, int index = 0) { ConnectCamera(cameraDeviceInfo); Index = index; }