Ejemplo n.º 1
0
        public SnapshotRetriever(CameraSummary summary, IGXFactory igxFactory)
        {
            this.summary = summary;

            try
            {
                stopwatch.Start();
                device = igxFactory.OpenDeviceBySN(summary.Identifier, GX_ACCESS_MODE.GX_ACCESS_EXCLUSIVE);
                log.DebugFormat("{0} opened in {1} ms.", summary.Alias, stopwatch.ElapsedMilliseconds);
                stopwatch.Stop();

                featureControl = device.GetRemoteFeatureControl();
                DahengHelper.AfterOpen(featureControl);

                width   = (int)featureControl.GetIntFeature("Width").GetValue();
                height  = (int)featureControl.GetIntFeature("Height").GetValue();
                isColor = DahengHelper.IsColor(featureControl);

                stream = device.OpenStream(0);
            }
            catch (Exception e)
            {
                LogError(e, "Failed to open device");
            }
        }
Ejemplo n.º 2
0
        public void CameraForgotten(CameraSummary summary)
        {
            ForgetCamera(summary);
            List <CameraSummary> newList = new List <CameraSummary>(cameraSummaries);

            UpdateCameraList(newList);
        }
Ejemplo n.º 3
0
        public FormConfiguration(CameraSummary summary)
        {
            this.summary = summary;

            InitializeComponent();
            tbAlias.AutoSize = false;
            tbAlias.Height   = 20;

            tbAlias.Text            = summary.Alias;
            lblSystemName.Text      = summary.Name;
            btnIcon.BackgroundImage = summary.Icon;

            SpecificInfo specific = summary.Specific as SpecificInfo;

            if (specific == null || specific.Handle == null || !specific.Handle.IsValid)
            {
                return;
            }

            deviceHandle     = specific.Handle;
            cameraProperties = CameraPropertyManager.Read(specific.Handle, summary.Identifier);

            if (cameraProperties.Count != specific.CameraProperties.Count)
            {
                specificChanged = true;
            }

            Populate();
        }
Ejemplo n.º 4
0
        public FormConfiguration(CameraSummary summary, Action disconnect, Action connect)
        {
            this.summary    = summary;
            this.disconnect = disconnect;
            this.connect    = connect;

            InitializeComponent();
            tbAlias.AutoSize = false;
            tbAlias.Height   = 20;

            tbAlias.Text            = summary.Alias;
            lblSystemName.Text      = summary.Name;
            btnIcon.BackgroundImage = summary.Icon;
            btnReconnect.Text       = CameraLang.FormConfiguration_Reconnect;

            SpecificInfo specific = summary.Specific as SpecificInfo;

            if (specific == null || specific.Device == null)
            {
                return;
            }

            device           = specific.Device;
            cameraProperties = CameraPropertyManager.Read(device);
            if (cameraProperties.Count != specific.CameraProperties.Count)
            {
                specificChanged = true;
            }

            PopulateCameraControls();

            this.Text     = CameraLang.FormConfiguration_Title;
            btnApply.Text = CameraLang.Generic_Apply;
            UpdateResultingFramerate();
        }
Ejemplo n.º 5
0
        private void UpdateCamera(CameraSummary summary)
        {
            if (!lvCameras.Items.ContainsKey(summary.Identifier))
            {
                return;
            }

            ListViewItem lvi   = lvCameras.Items[summary.Identifier];
            int          index = IndexOfCamera(cameraSummaries, summary.Identifier);

            cameraSummaries[index] = summary;

            cameraIcons.Images.RemoveByKey(lvi.ImageKey);
            cameraIcons.Images.Add(summary.Identifier, summary.Icon);

            lvi.Text = summary.Alias;

            // We specify the image by key, but the ListView actually uses the index to
            // refer to the image. So when we alter the image list, everything is scrambled.
            // Assigning the key again seems to go through the piece of code that recomputes the index and fixes things.
            foreach (ListViewItem item in lvCameras.Items)
            {
                item.ImageKey = item.ImageKey;
            }

            lvCameras.Invalidate();
        }
Ejemplo n.º 6
0
        public FrameGrabber(CameraSummary summary, CameraManagerHTTP manager)
        {
            this.summary = summary;
            this.manager = manager;

            SpecificInfo specific = summary.Specific as SpecificInfo;

            if (specific == null)
            {
                return;
            }

            string url = URLHelper.BuildURL(specific);

            this.format = specific.Format;

            if (format == "MJPEG")
            {
                device = new CameraHTTPClientMJPEG(url, specific.User, specific.Password);
            }
            else if (format == "JPEG")
            {
                device = new CameraHTTPClientJPEG(url, specific.User, specific.Password);
            }
        }
Ejemplo n.º 7
0
        public FormConfiguration(CameraSummary summary)
        {
            this.summary = summary;

            InitializeComponent();
            tbAlias.AutoSize = false;
            tbAlias.Height   = 20;

            tbAlias.Text            = summary.Alias;
            lblSystemName.Text      = summary.Name;
            btnIcon.BackgroundImage = summary.Icon;

            SpecificInfo specific = summary.Specific as SpecificInfo;

            if (specific == null || specific.Camera == null || !specific.Camera.IsOpened)
            {
                return;
            }

            camera = specific.Camera;
            int temp;

            camera.Device.GetDeviceID(out temp);
            deviceId = (long)temp;

            cameraProperties = CameraPropertyManager.Read(camera, deviceId);

            if (cameraProperties.Count != specific.CameraProperties.Count)
            {
                specificChanged = true;
            }

            Populate();
        }
        public SnapshotRetriever(CameraSummary summary, string moniker)
        {
            this.moniker = moniker;
            this.summary = summary;

            device = new VideoCaptureDevice(moniker);
        }
Ejemplo n.º 9
0
        public override ICaptureSource CreateCaptureSource(CameraSummary summary)
        {
            string       moniker = summary.Identifier;
            FrameGrabber grabber = new FrameGrabber(summary, moniker);

            return(grabber);
        }
Ejemplo n.º 10
0
        public override string GetSummaryAsText(CameraSummary summary)
        {
            string result = "";
            string alias  = summary.Alias;

            SpecificInfo info = summary.Specific as SpecificInfo;

            try
            {
                if (info != null &&
                    info.StreamFormat != null &&
                    info.CameraProperties.ContainsKey("width") &&
                    info.CameraProperties.ContainsKey("height") &&
                    info.CameraProperties.ContainsKey("framerate"))
                {
                    string format    = info.StreamFormat;
                    int    width     = int.Parse(info.CameraProperties["width"].CurrentValue, CultureInfo.InvariantCulture);
                    int    height    = int.Parse(info.CameraProperties["height"].CurrentValue, CultureInfo.InvariantCulture);
                    double framerate = double.Parse(info.CameraProperties["framerate"].CurrentValue, CultureInfo.InvariantCulture);

                    result = string.Format("{0} - {1}×{2} @ {3:0.##} fps ({4}).", alias, width, height, framerate, format);
                }
                else
                {
                    result = string.Format("{0}", alias);
                }
            }
            catch
            {
                result = string.Format("{0}", alias);
            }

            return(result);
        }
Ejemplo n.º 11
0
        public override bool Configure(CameraSummary summary, Action disconnect, Action connect)
        {
            bool         needsReconnection = false;
            SpecificInfo info = summary.Specific as SpecificInfo;

            if (info == null)
            {
                return(false);
            }

            FormConfiguration form = new FormConfiguration(summary, disconnect, connect);

            FormsHelper.Locate(form);
            if (form.ShowDialog() == DialogResult.OK)
            {
                if (form.AliasChanged)
                {
                    summary.UpdateAlias(form.Alias, form.PickedIcon);
                }

                if (form.SpecificChanged)
                {
                    info.CameraProperties = form.CameraProperties;

                    summary.UpdateDisplayRectangle(Rectangle.Empty);
                    needsReconnection = true;
                }

                CameraTypeManager.UpdatedCameraSummary(summary);
            }

            form.Dispose();
            return(needsReconnection);
        }
Ejemplo n.º 12
0
        public override bool Configure(CameraSummary summary)
        {
            bool needsReconnection = false;
            FormConfiguration form = new FormConfiguration(summary);

            FormsHelper.Locate(form);
            if (form.ShowDialog() == DialogResult.OK)
            {
                if (form.AliasChanged)
                {
                    summary.UpdateAlias(form.Alias, form.PickedIcon);
                }

                if (form.SpecificChanged)
                {
                    summary.UpdateSpecific(form.Specific);
                    summary.UpdateDisplayRectangle(Rectangle.Empty);
                    needsReconnection = true;
                }

                CameraTypeManager.UpdatedCameraSummary(summary);
            }

            form.Dispose();
            return(needsReconnection);
        }
Ejemplo n.º 13
0
        public FormConfiguration(CameraSummary summary)
        {
            this.summary    = summary;
            this.identifier = summary.Identifier;

            InitializeComponent();
            tbAlias.AutoSize = false;
            tbAlias.Height   = 20;

            tbAlias.Text            = summary.Alias;
            lblSystemName.Text      = summary.Name;
            btnIcon.BackgroundImage = summary.Icon;

            InitializeMediaTypes(summary);

            if (canStreamConfig)
            {
                PopulateFormats();
            }
            else
            {
                DisableStreamConfig();
            }

            streamConfigInitialized = true;

            cameraProperties = CameraPropertyManager.Read(device);
            PopulateCameraControl();
            Localize();
        }
Ejemplo n.º 14
0
        public override string GetSummaryAsText(CameraSummary summary)
        {
            string       result = "";
            string       alias  = summary.Alias;
            SpecificInfo info   = summary.Specific as SpecificInfo;

            try
            {
                if (info != null &&
                    info.CameraProperties.ContainsKey("Width") &&
                    info.CameraProperties.ContainsKey("Height") &&
                    info.CameraProperties.ContainsKey("AcquisitionFrameRate"))
                {
                    int    width     = int.Parse(info.CameraProperties["Width"].CurrentValue, CultureInfo.InvariantCulture);
                    int    height    = int.Parse(info.CameraProperties["Height"].CurrentValue, CultureInfo.InvariantCulture);
                    double framerate = DahengHelper.GetResultingFramerate(info.Device);
                    if (framerate == 0)
                    {
                        framerate = double.Parse(info.CameraProperties["AcquisitionFrameRate"].CurrentValue, CultureInfo.InvariantCulture);
                    }

                    result = string.Format("{0} - {1}×{2} @ {3:0.##} fps.", alias, width, height, framerate);
                }
                else
                {
                    result = string.Format("{0}", alias);
                }
            }
            catch
            {
                result = string.Format("{0}", alias);
            }

            return(result);
        }
        public SnapshotRetriever(CameraSummary summary, long deviceId)
        {
            this.summary = summary;

            camera.EventFrame           += camera_EventFrame;
            camera.EventDeviceRemove    += camera_EventDeviceRemove;
            camera.EventDeviceUnPlugged += camera_EventDeviceUnPlugged;

            try
            {
                uEye.Defines.Status status = camera.Init((Int32)deviceId | (Int32)uEye.Defines.DeviceEnumeration.UseDeviceID);

                if (status != uEye.Defines.Status.SUCCESS)
                {
                    log.ErrorFormat("Camera {0} could not be opened for thumbnail capture.", summary.Alias);
                    return;
                }

                // We do not load the camera-specific profile for the thumbnail at the moment.
                // For some reason the .ToBitmap method doesn't work well on the RGB32 format, so in order to at least have something we
                // load the camera on the default profile for the thumbnail.
                //ProfileHelper.Load(camera, ProfileHelper.GetProfileFilename(summary.Identifier));

                status = camera.Memory.Allocate();
                if (status != uEye.Defines.Status.SUCCESS)
                {
                    log.ErrorFormat("Camera {0} could not have its buffer allocated for thumbnail capture.", summary.Alias);
                    return;
                }
            }
            catch (Exception e)
            {
                LogError(e, "");
            }
        }
Ejemplo n.º 16
0
        public override string GetSummaryAsText(CameraSummary summary)
        {
            string result = "";
            string alias  = summary.Alias;

            SpecificInfo info = summary.Specific as SpecificInfo;

            if (info != null && info.MediaTypeIndex >= 0)
            {
                VideoCaptureDevice          device     = new VideoCaptureDevice(summary.Identifier);
                Dictionary <int, MediaType> mediaTypes = MediaTypeImporter.Import(device);
                if (mediaTypes.ContainsKey(info.MediaTypeIndex))
                {
                    Size   size        = mediaTypes[info.MediaTypeIndex].FrameSize;
                    float  fps         = (float)info.SelectedFramerate;
                    string compression = mediaTypes[info.MediaTypeIndex].Compression;
                    result = string.Format("{0} - {1}×{2} @ {3:0.##} fps ({4}).", alias, size.Width, size.Height, fps, compression);
                }
                else
                {
                    result = string.Format("{0}", alias);
                }
            }
            else
            {
                result = string.Format("{0}", alias);
            }

            return(result);
        }
Ejemplo n.º 17
0
        public override bool Configure(CameraSummary summary)
        {
            bool needsReconnection = false;
            FormConfiguration form = new FormConfiguration(summary);

            FormsHelper.Locate(form);
            if (form.ShowDialog() == DialogResult.OK)
            {
                if (form.AliasChanged)
                {
                    summary.UpdateAlias(form.Alias, form.PickedIcon);
                }

                if (form.SpecificChanged)
                {
                    SpecificInfo info = new SpecificInfo();
                    info.MediaTypeIndex    = form.SelectedMediaTypeIndex;
                    info.SelectedFramerate = form.SelectedFramerate;
                    info.CameraProperties  = form.CameraProperties;

                    summary.UpdateSpecific(info);

                    summary.UpdateDisplayRectangle(Rectangle.Empty);
                    needsReconnection = form.NeedsReconnection;
                }

                CameraTypeManager.UpdatedCameraSummary(summary);
            }

            form.Dispose();
            return(needsReconnection);
        }
Ejemplo n.º 18
0
        public override bool Configure(CameraSummary summary)
        {
            bool         needsReconnection = false;
            SpecificInfo info = summary.Specific as SpecificInfo;

            if (info == null)
            {
                return(false);
            }

            FormConfiguration form = new FormConfiguration(summary);

            if (form.ShowDialog() == DialogResult.OK)
            {
                if (form.AliasChanged)
                {
                    summary.UpdateAlias(form.Alias, form.PickedIcon);
                }

                if (form.SpecificChanged)
                {
                    info.StreamFormat     = form.SelectedStreamFormat.Symbol;
                    info.Bayer8Conversion = form.Bayer8Conversion;
                    info.CameraProperties = form.CameraProperties;

                    summary.UpdateDisplayRectangle(Rectangle.Empty);
                    needsReconnection = true;
                }

                CameraTypeManager.UpdatedCameraSummary(summary);
            }

            form.Dispose();
            return(needsReconnection);
        }
Ejemplo n.º 19
0
 public override void ForgetCamera(CameraSummary summary)
 {
     if (cache.ContainsKey(summary.Identifier))
     {
         cache.Remove(summary.Identifier);
     }
 }
Ejemplo n.º 20
0
        public override CameraBlurb BlurbFromSummary(CameraSummary summary)
        {
            string      specific = SpecificInfoSerialize(summary);
            CameraBlurb blurb    = new CameraBlurb(CameraType, summary.Identifier, summary.Alias, summary.Icon, summary.DisplayRectangle, summary.AspectRatio.ToString(), specific);

            return(blurb);
        }
Ejemplo n.º 21
0
        private string SpecificInfoSerialize(CameraSummary summary)
        {
            SpecificInfo info = summary.Specific as SpecificInfo;

            if (info == null)
            {
                return(null);
            }

            XmlDocument doc     = new XmlDocument();
            XmlElement  xmlRoot = doc.CreateElement("FrameGenerator");

            XmlElement xmlFrameInterval = doc.CreateElement("FrameInterval");
            string     frameInterval    = string.Format("{0}", info.FrameInterval);

            xmlFrameInterval.InnerText = frameInterval;
            xmlRoot.AppendChild(xmlFrameInterval);

            XmlElement xmlFrameSize = doc.CreateElement("FrameSize");
            string     frameSize    = string.Format("{0};{1}", info.FrameSize.Width, info.FrameSize.Height);

            xmlFrameSize.InnerText = frameSize;
            xmlRoot.AppendChild(xmlFrameSize);

            doc.AppendChild(xmlRoot);

            return(doc.OuterXml);
        }
Ejemplo n.º 22
0
        public override List <CameraSummary> DiscoverCameras(IEnumerable <CameraBlurb> blurbs)
        {
            List <CameraSummary> summaries = new List <CameraSummary>();

            foreach (CameraBlurb blurb in blurbs)
            {
                if (blurb.CameraType != CameraType)
                {
                    continue;
                }

                string             alias            = blurb.Alias;
                string             identifier       = blurb.Identifier;
                Bitmap             icon             = blurb.Icon ?? defaultIcon;
                Rectangle          displayRectangle = blurb.DisplayRectangle;
                CaptureAspectRatio aspectRatio      = CaptureAspectRatio.Auto;
                if (!string.IsNullOrEmpty(blurb.AspectRatio))
                {
                    aspectRatio = (CaptureAspectRatio)Enum.Parse(typeof(CaptureAspectRatio), blurb.AspectRatio);
                }
                object specific = SpecificInfoDeserialize(blurb.Specific);

                CameraSummary summary = new CameraSummary(alias, defaultName, identifier, icon, displayRectangle, aspectRatio, specific, this);
                summaries.Add(summary);
            }

            return(summaries);
        }
Ejemplo n.º 23
0
        public override bool Configure(CameraSummary summary)
        {
            bool needsReconnection = false;
            FormConfiguration form = new FormConfiguration(summary);

            if (form.ShowDialog() == DialogResult.OK)
            {
                if (form.AliasChanged)
                {
                    summary.UpdateAlias(form.Alias, form.PickedIcon);
                }

                if (form.SpecificChanged)
                {
                    SpecificInfo info = new SpecificInfo();
                    info.FrameInterval = form.FrameInterval;
                    info.FrameSize     = form.FrameSize;
                    summary.UpdateSpecific(info);
                    summary.UpdateDisplayRectangle(Rectangle.Empty);

                    needsReconnection = true;
                }

                CameraTypeManager.UpdatedCameraSummary(summary);
            }

            form.Dispose();
            return(needsReconnection);
        }
Ejemplo n.º 24
0
 private void Drop(DragEventArgs e, int target)
 {
     if (e.Data.GetDataPresent(typeof(CameraSummary)))
     {
         CameraSummary summary = (CameraSummary)e.Data.GetData(typeof(CameraSummary));
         if (summary != null)
         {
             CameraTypeManager.LoadCamera(summary, target);
         }
     }
     else if (e.Data.GetDataPresent(DataFormats.StringFormat))
     {
         string filename = (string)e.Data.GetData(DataFormats.StringFormat);
         FileLoadAsked(this, new FileLoadAskedEventArgs(filename, target));
     }
     else if (e.Data.GetDataPresent(DataFormats.FileDrop))
     {
         Array fileArray = (Array)e.Data.GetData(DataFormats.FileDrop);
         if (fileArray != null)
         {
             string filename = fileArray.GetValue(0).ToString();
             FileLoadAsked(this, new FileLoadAskedEventArgs(filename, target));
         }
     }
 }
Ejemplo n.º 25
0
 public void UpdateSummary(CameraSummary summary)
 {
     this.Summary            = summary;
     lblAlias.Text           = summary.Alias;
     btnIcon.BackgroundImage = summary.Icon;
     RelocateInfo();
 }
Ejemplo n.º 26
0
        private static void LoadUnspecified(ScreenManagerKernel manager, CameraSummary summary)
        {
            if (manager.ScreenCount == 0)
            {
                manager.AddCaptureScreen();
                LoadInSpecificTarget(manager, 0, summary);
            }
            else if (manager.ScreenCount == 1)
            {
                LoadInSpecificTarget(manager, 0, summary);
            }
            else if (manager.ScreenCount == 2)
            {
                int emptyScreen = manager.FindEmptyScreen();

                if (emptyScreen != -1)
                {
                    LoadInSpecificTarget(manager, emptyScreen, summary);
                }
                else
                {
                    LoadInSpecificTarget(manager, 1, summary);
                }
            }
        }
Ejemplo n.º 27
0
 public FormCameraAlias(CameraSummary summary)
 {
     this.summary = summary;
     InitializeComponent();
     Initialize();
     tbAlias.SelectAll();
     tbAlias.Focus();
 }
Ejemplo n.º 28
0
        public CameraSummary GetResult()
        {
            string        id      = Guid.NewGuid().ToString();
            CameraSummary summary = manager.GetDefaultCameraSummary(id);

            summary.UpdateSpecific(CreateSpecific());
            return(summary);
        }
Ejemplo n.º 29
0
        public void LoadCamera(CameraSummary summary)
        {
            CameraTypeManager.StopDiscoveringCameras();

            CameraManager manager = summary.Manager;

            grabber = manager.Connect(summary);
        }
Ejemplo n.º 30
0
        private string SpecificInfoSerialize(CameraSummary summary)
        {
            SpecificInfo info = summary.Specific as SpecificInfo;

            if (info == null)
            {
                return(null);
            }

            XmlDocument doc     = new XmlDocument();
            XmlElement  xmlRoot = doc.CreateElement("Baumer");

            XmlElement xmlStreamFormat = doc.CreateElement("StreamFormat");

            xmlStreamFormat.InnerText = info.StreamFormat;
            xmlRoot.AppendChild(xmlStreamFormat);

            XmlElement xmlDemosaicing = doc.CreateElement("Demosaicing");

            xmlDemosaicing.InnerText = info.Demosaicing.ToString().ToLowerInvariant();
            xmlRoot.AppendChild(xmlDemosaicing);

            XmlElement xmlCompression = doc.CreateElement("Compression");

            xmlCompression.InnerText = info.Compression.ToString().ToLowerInvariant();
            xmlRoot.AppendChild(xmlCompression);

            XmlElement xmlCameraProperties = doc.CreateElement("CameraProperties");

            foreach (KeyValuePair <string, CameraProperty> pair in info.CameraProperties)
            {
                if (pair.Value == null)
                {
                    continue;
                }

                XmlElement   xmlCameraProperty = doc.CreateElement("CameraProperty");
                XmlAttribute attr = doc.CreateAttribute("key");
                attr.Value = pair.Key;
                xmlCameraProperty.Attributes.Append(attr);

                XmlElement xmlCameraPropertyValue = doc.CreateElement("Value");
                xmlCameraPropertyValue.InnerText = pair.Value.CurrentValue;
                xmlCameraProperty.AppendChild(xmlCameraPropertyValue);

                XmlElement xmlCameraPropertyAuto = doc.CreateElement("Auto");
                xmlCameraPropertyAuto.InnerText = pair.Value.Automatic.ToString().ToLower();
                xmlCameraProperty.AppendChild(xmlCameraPropertyAuto);

                xmlCameraProperties.AppendChild(xmlCameraProperty);
            }

            xmlRoot.AppendChild(xmlCameraProperties);

            doc.AppendChild(xmlRoot);

            return(doc.OuterXml);
        }