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);
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        // 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);
        }
Esempio n. 5
0
 // 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));
 }
Esempio n. 6
0
        void IPCamera_DeviceDiscovered(object sender, DiscoveryEventArgs e)
        {
            var deviceInfo = new CameraDeviceInfo {
                IpCameraInfo = new IPVideoDeviceInfo(e.Device)
            };

            AddDeviceToList(deviceInfo);
        }
Esempio n. 7
0
        void OnDeviceAdded(CameraDeviceInfo info)
        {
            var handler = DeviceAdded;

            if (handler != null)
            {
                handler(this, new DeviceAddedEventArgs(info));
            }
        }
Esempio n. 8
0
 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);
 }
Esempio n. 9
0
 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);
         }
     }
 }
Esempio n. 10
0
        void DiscoverUsbDevices()
        {
            var webCameras = WebCamera.GetDevices();

            foreach (var camera in webCameras)
            {
                var deviceInfo = new CameraDeviceInfo {
                    WebCameraInfo = camera
                };
                AddDeviceToList(deviceInfo);
            }
        }
Esempio n. 11
0
        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();
        }
Esempio n. 12
0
 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;
 }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
        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);
     }
 }
Esempio n. 16
0
        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");
        }
Esempio n. 17
0
        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;
        }
Esempio n. 18
0
        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();*/
        }
Esempio n. 19
0
 public FLIRCamera(CameraDeviceInfo cameraDeviceInfo, int index = 0)
 {
     ConnectCamera(cameraDeviceInfo);
     Index = index;
 }