示例#1
0
文件: DaHua.cs 项目: 22860364/Xvision
 public override bool SetTriggerMode(string triggerMode)
 {
     using (IEnumParameter p = m_dev.ParameterCollection[ParametrizeNameSet.TriggerMode])
     {
         return(p.SetValue(triggerMode));
     }
 }
示例#2
0
        /// <summary>
        /// 设置相机配参
        /// </summary>
        private void SetParameters()
        {
            if (_Camera == null)
            {
                return;
            }

            // 关闭触发模式
            _Camera.TriggerSet.Close();

            // 设置帧格式
            using (IEnumParameter ep = _Camera.ParameterCollection[ParametrizeNameSet.ImagePixelFormat])
            {
                ep.SetValue("Mono8");
            }

            // 获取图像宽度
            using (IIntegraParameter ip = _Camera.ParameterCollection[ParametrizeNameSet.ImageWidth])
            {
                this.MaxWidth = Convert.ToInt32(ip.GetMaximum());
                this.Width    = Convert.ToInt32(ip.GetValue());
            }

            // 获取图像高度
            using (IIntegraParameter ip = _Camera.ParameterCollection[ParametrizeNameSet.ImageHeight])
            {
                this.MaxHeight = Convert.ToInt32(ip.GetMaximum());
                this.Height    = Convert.ToInt32(ip.GetValue());
            }
        }
        // Shown here for demonstration purposes only to illustrate the effect of this configuration.
        static void DisableAllTriggers(object sender, EventArgs e)
        {
            ICamera camera = sender as ICamera;
            // Disable all trigger types.
            //------------------------------------------------------------------------------

            // Get required enumerations.
            IEnumParameter triggerSelector = camera.Parameters [PLCamera.TriggerSelector];
            IEnumParameter triggerMode     = camera.Parameters [PLCamera.TriggerMode];

            // Remember previous selector value.
            string oldSelectorValue = triggerSelector.IsReadable ? triggerSelector.GetValue() : null;

            try
            {
                // Turn trigger mode off for all trigger selector entries.
                foreach (string trigger in triggerSelector)
                {
                    triggerSelector.SetValue(trigger);
                    triggerMode.SetValue(PLCamera.TriggerMode.Off);
                }
            }
            finally
            {
                // Restore previous selector.
                if (oldSelectorValue != null)
                {
                    triggerSelector.SetValue(oldSelectorValue);
                }
            }
            // Set acquisition mode to Continuous.
            camera.Parameters [PLCamera.AcquisitionMode].SetValue(PLCamera.AcquisitionMode.SingleFrame);
        }
示例#4
0
        public void Setting(byte Mode) //Mode 0:Live 1:Hard 2:Soft
        {
            for (byte i = 0; i < app.MaxCameraCount; i++)
            {
                if (SelectCameraCompany == 0 && selectCameraHandle[i] != (IntPtr)0)
                {
                    m_Camera[i] = new StCamera(selectCameraHandle[i]);
                    m_Camera[i].StopTransfer();

                    if (Mode == 0)
                    {
                        m_Camera[i].TriggerMode = StTrg.STCAM_TRIGGER_MODE_OFF;
                    }
                    else if (Mode == 1)
                    {
                        m_Camera[i].TriggerMode      = StTrg.STCAM_TRIGGER_MODE_ON;
                        m_Camera[i].TriggerSource    = StTrg.STCAM_TRIGGER_SOURCE_HARDWARE;
                        m_Camera[i].IOPinMode[0]     = 16;
                        m_Camera[i].IOPinPolarity[0] = 0;
                    }
                    else if (Mode == 2)
                    {
                        m_Camera[i].TriggerMode   = StTrg.STCAM_TRIGGER_MODE_ON;
                        m_Camera[i].TriggerSource = StTrg.STCAM_TRIGGER_SOURCE_SOFTWARE;
                    }

                    m_Camera[i].SetDisplayImageCallback(new StCamera.DisplayImageCallback(Receiver));
                    m_Camera[i].StopTransfer();
                }
                else if (SelectCameraCompany == 1 && selectDevHandle[i] != -1)
                {
                    m_dev[i].Open();

                    if (Mode == 0)
                    {
                        m_dev[i].TriggerSet.Close();
                    }
                    else if (Mode == 1)
                    {
                        m_dev[i].TriggerSet.Open(TriggerSourceEnum.Line2);
                    }
                    else if (Mode == 2)
                    {
                        m_dev[i].TriggerSet.Open(TriggerSourceEnum.Software);
                    }

                    using (IEnumParameter p = m_dev[i].ParameterCollection[ParametrizeNameSet.ImagePixelFormat])
                    {
                        p.SetValue("Mono8");
                    }

                    m_dev[i].StreamGrabber.SetBufferCount(8);
                    if (m_dev[i].StreamGrabber != null)
                    {
                        m_dev[i].StreamGrabber.ImageGrabbed += Receiver;
                    }
                }
            }
        }
示例#5
0
文件: DaHua.cs 项目: 22860364/Xvision
        public override string GetImageFormat()   // 获取图像格式
        {
            using (IEnumParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ImagePixelFormat])

            {
                return(p.GetValue());
            }
        }
示例#6
0
文件: DaHua.cs 项目: 22860364/Xvision
        public override bool SetImageFormat(string value)
        {
            using (IEnumParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ImagePixelFormat])

            {
                return(p.SetValue(value));
            }
        }
示例#7
0
            internal static Node Make(IEnumParameter parameter, DomainDomain source)
            {
                var options = source.GetEnumOptions(parameter.Value).Select(o => o.Name);

                return(new Count {
                    Min = 1, Max = 1, Subjects = options.Select(o => new String {
                        Value = o, Next = new Node[0]
                    }).ToArray()
                });
            }
示例#8
0
            internal static Node MakeDynamic(IEnumParameter parameter, ConversationDataSource conversationSource, object newSourceId)
            {
                var enumsource = conversationSource.GetSource(ParameterType.Basic.FromGuid(parameter.Value), newSourceId);
                var options    = enumsource.Options;

                return(new Count {
                    Min = 1, Max = 1, Subjects = options.Select(o => new String {
                        Value = o, Next = new Node[0]
                    }).ToArray()
                });
            }
        // Shown here for demonstration purposes only to illustrate the effect of this configuration.
        public static void SoftwareTrigger(object sender, EventArgs e)
        {
            ICamera camera = sender as ICamera;
            // Get required Enumerations.
            IEnumParameter triggerSelector = camera.Parameters [PLCamera.TriggerSelector];
            IEnumParameter triggerMode     = camera.Parameters [PLCamera.TriggerMode];
            IEnumParameter triggerSource   = camera.Parameters [PLCamera.TriggerSource];


            // Check the available camera trigger mode(s) to select the appropriate one: acquisition start trigger mode
            // (used by older cameras, i.e. for cameras supporting only the legacy image acquisition control mode;
            // do not confuse with acquisition start command) or frame start trigger mode
            // (used by newer cameras, i.e. for cameras using the standard image acquisition control mode;
            // equivalent to the acquisition start trigger mode in the legacy image acquisition control mode).
            string triggerName = "FrameStart";

            if (!triggerSelector.CanSetValue(triggerName))
            {
                triggerName = "AcquisitionStart";
                if (!triggerSelector.CanSetValue(triggerName))
                {
                    throw new NotSupportedException("Could not select trigger. Neither FrameStart nor AcquisitionStart is available.");
                }
            }

            try
            {
                foreach (string trigger in triggerSelector)
                {
                    triggerSelector.SetValue(trigger);

                    if (triggerName == trigger)
                    {
                        // Activate trigger.
                        triggerMode.SetValue(PLCamera.TriggerMode.On);

                        // Set the trigger source to software.
                        triggerSource.SetValue(PLCamera.TriggerSource.Software);
                    }
                    else
                    {
                        // Turn trigger mode off.
                        triggerMode.SetValue(PLCamera.TriggerMode.Off);
                    }
                }
            }
            finally
            {
                // Set selector for software trigger.
                triggerSelector.SetValue(triggerName);
            }
            // Set acquisition mode to Continuous
            camera.Parameters [PLCamera.AcquisitionMode].SetValue(PLCamera.AcquisitionMode.Continuous);
        }
示例#10
0
        /// <summary>
        /// 输出相机开关量
        /// </summary>
        /// <param name="millSeconds">高电平持续毫秒数</param>
        /// <param name="num">单号</param>
        public void IoOutput(int millSeconds, string num)
        {
            // 保证每次只允许一个信号输出
            if (Interlocked.CompareExchange(ref _bIoOutFlag, 1, 0) == 0)
            {
                // 异步输出脉冲信号
                new TaskFactory().StartNew(() =>
                {
                    try
                    {
                        if (_Camera != null)
                        {
                            //选择输出信号
                            using (IEnumParameter ep = _Camera.ParameterCollection[ParametrizeNameSet.IOLineSelector])
                            {
                                ep.SetValue("Line0");
                            }

                            // 选择用户输出
                            using (IEnumParameter ep = _Camera.ParameterCollection[ParametrizeNameSet.IOUserOutputSelector])
                            {
                                ep.SetValue("UserOutPut0");
                            }

                            // 输出信号脉冲
                            using (IBooleanParameter bp = _Camera.ParameterCollection[ParametrizeNameSet.IOUserOutputValue])
                            {
                                bp.SetValue(false);
                            }

                            Thread.Sleep(millSeconds);

                            // 停止输出脉冲
                            using (IBooleanParameter bp = _Camera.ParameterCollection[ParametrizeNameSet.IOUserOutputValue])
                            {
                                bp.SetValue(true);
                            }

                            // 允许输出
                            Interlocked.CompareExchange(ref _bIoOutFlag, 0, 1);
                        }
                    }
                    catch (Exception e)
                    {
                        MvBarCodeGlobalVar.Log.Error(e);
                    }
                });
            }
        }
        // Shown here for demonstration purposes only to illustrate the effect of this configuration.
        static void DisableCompression(object sender, EventArgs e)
        {
            ICamera camera = sender as ICamera;

            // Disable compression mode.
            //------------------------------------------------------------------------------

            // Get required enumeration.
            IEnumParameter compressionMode = camera.Parameters [(EnumName)"ImageCompressionMode"];

            if (compressionMode.IsWritable)
            {
                // Turn off compression mode.
                compressionMode.SetValue("Off");
            }
        }
示例#12
0
文件: Dahua.cs 项目: Tamiy2020/Vision
        public override void Open()
        {
            objDev = Enumerator.GetDeviceByKey(strName);

            // 注册链接事件
            objDev.CameraOpened   += OnCameraOpen;
            objDev.ConnectionLost += OnConnectLoss;
            objDev.CameraClosed   += OnCameraClose;

            // 打开设备
            // open device
            if (!objDev.Open())
            {
                MessageBox.Show("Open camera failed");
                return;
            }

            // 打开Software Trigger
            objDev.TriggerSet.Open(TriggerSourceEnum.Software);

            // 设置图像格式
            // set PixelFormat
            using (IEnumParameter p = objDev.ParameterCollection[ParametrizeNameSet.ImagePixelFormat])
            {
                p.SetValue("Mono8");
            }

            // 开启图像采集函数线程
            renderThread = new Thread(new ThreadStart(ShowThread));
            renderThread.IsBackground = true;
            renderThread.Start();

            // 设置缓存个数为8(默认值为16)
            objDev.StreamGrabber.SetBufferCount(8);

            // 注册码流回调事件
            objDev.StreamGrabber.ImageGrabbed += OnImageGrabbed;

            // 开启码流
            // start grabbing
            if (!objDev.GrabUsingGrabLoopThread())
            {
                MessageBox.Show(@"Start grabbing failed");
                return;
            }
        }
示例#13
0
文件: DaHua.cs 项目: 22860364/Xvision
        public override bool InitialCamera(string _serialNumber)  // 初始化相机
        {
            string name = "Machine Vision:" + _serialNumber;

            this.userID = name;
            /* 设备搜索 */


            if (li.Count > 0)
            {
                for (int i = 0; i < li.Count; i++)
                {
                    if (li[i].Key == userID)
                    {
                        m_dev = Enumerator.GetDeviceByKey(userID);
                        try
                        {
                            if (m_dev.Open())
                            {
                                using (IEnumParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ImagePixelFormat])
                                {
                                    p.SetValue("Mono8");
                                }
                                /* 开启相机线程 */
                                renderThread = new Thread(new ThreadStart(ShowThread));
                                renderThread.IsBackground = true;
                                renderThread.Start();
                                /* 设置缓存个数为8(默认值为16) */
                                m_dev.StreamGrabber.SetBufferCount(8);

                                /* 注册码流回调事件 图像回调函数 */
                                m_dev.StreamGrabber.ImageGrabbed += OnImageGrabbed;
                                /* 相机短线回调 */
                                m_dev.ConnectionLost += OnConnectLoss;
                                ConnectState          = true;
                            }
                        }
                        catch (Exception)
                        {
                            return(false);
                        }
                    }
                }
            }
            return(true);
        }
示例#14
0
        public void Setup(ParameterEditorSetupData data)
        {
            m_parameter = data.Parameter as IEnumParameter;
            foreach (var ch in m_parameter.Options.OrderBy(o => m_parameter.GetName(o)))
            {
                m_comboBoxItems.Add(new TItem(m_parameter.GetName(ch), ch));
            }

            if (!m_parameter.Corrupted)
            {
                var valueName = m_parameter.GetName(m_parameter.Value);
                if (valueName != null)
                {
                    m_comboBox.SelectedItem = new TItem(valueName, m_parameter.Value);
                }
                else
                {
                    m_comboBox.SelectedItem = new TItem(InvalidValue);
                }
            }
        }
示例#15
0
 public DynamicEnumerationValue(IEnumParameter parameter)
 {
     Type = ParameterType.Basic.FromGuid(parameter.Value);
 }
示例#16
0
        /* 打开相机按钮事件 */
        private void btnOpen_Click(object sender, EventArgs e)
        {
            try
            {
                /* 设备搜索 */
                List <IDeviceInfo> li = Enumerator.EnumerateDevices();
                if (li.Count > 0)
                {
                    /* 获取搜索到的第一个设备 */
                    m_dev = Enumerator.GetDeviceByIndex(0);

                    /* 注册链接时间 */
                    m_dev.CameraOpened   += OnCameraOpen;
                    m_dev.ConnectionLost += OnConnectLoss;
                    m_dev.CameraClosed   += OnCameraClose;

                    /* 打开设备 */
                    if (!m_dev.Open())
                    {
                        MessageBox.Show(@"连接相机失败");
                        return;
                    }

                    /* 打开Software Trigger */
                    if (bVideoMode)
                    {
                        m_dev.TriggerSet.Close();
                    }
                    else
                    {
                        m_dev.TriggerSet.Open(TriggerSourceEnum.Software);
                    }

                    /* 设置图像格式 */
                    using (IEnumParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ImagePixelFormat])
                    {
                        p.SetValue("Mono8");
                    }

                    /* 设置曝光 */
                    using (IFloatParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ExposureTime])
                    {
                        p.SetValue(nExpTime);
                    }

                    /* 设置增益 */
                    using (IFloatParameter p = m_dev.ParameterCollection[ParametrizeNameSet.GainRaw])
                    {
                        p.SetValue(fCamGain);
                    }

                    /* 设置缓存个数为8(默认值为16) */
                    m_dev.StreamGrabber.SetBufferCount(8);

                    /* 注册码流回调事件 */
                    m_dev.StreamGrabber.ImageGrabbed += OnImageGrabbed;

                    /* 开启码流 */
                    if (!m_dev.GrabUsingGrabLoopThread())
                    {
                        MessageBox.Show(@"开启码流失败");
                        return;
                    }
                }
            }
            catch (Exception exception)
            {
                Catcher.Show(exception);
            }
        }
示例#17
0
 public EnumItem(IEnumParameter parameter, string valueName)
 {
     ValueName        = valueName;
     ValueDisplayName = parameter.GetAdvancedValueProperties(valueName).GetPropertyOrDefault(AdvancedParameterAccessKey.DisplayName, valueName);
 }
示例#18
0
 // Provides the display name and the name of an enum value.
 public EnumItem(IEnumParameter parameter)
 {
     ValueName        = parameter.GetValue();
     ValueDisplayName = parameter.GetAdvancedValueProperties(ValueName).GetPropertyOrDefault(AdvancedParameterAccessKey.DisplayName, ValueName);
 }
示例#19
0
        public static void Test()
        {
            Random                 random            = new Random(0);
            Func <string>          randomString      = () => "test" + random.NextDouble().ToString(CultureInfo.InvariantCulture);
            Func <Id <Parameter> > randomParameterId = () =>
            {
                byte[] bytes = new byte[16];
                random.NextBytes(bytes);
                return(Id <Parameter> .FromGuid(new Guid(bytes))); //Not really a guid but should be unique enough for this test
            };


            List <DecimalData>                 decimals          = new List <DecimalData>();
            List <IntegerData>                 integers          = new List <IntegerData>();
            List <EnumerationData>             enums             = new List <EnumerationData>();
            List <EnumerationData>             hiddenEnums       = new List <EnumerationData>();
            List <DynamicEnumerationData>      dynamicEnums      = new List <DynamicEnumerationData>();
            List <LocalDynamicEnumerationData> localDynamicEnums = new List <LocalDynamicEnumerationData>();
            List <LocalizedStringData>         localizedStrings  = new List <LocalizedStringData>();
            List <OtherData> others = new List <OtherData>();

            TypeSet t = new TypeSet();

            Action CheckContents = () =>
            {
                foreach (var x in decimals)
                {
                    CheckIs(t, x.TypeId, dec: true);
                    Assert.That(t.GetTypeName(x.TypeId), Is.EqualTo(x.Name));

                    IParameter parameter = CheckBasicMake(randomString(), randomParameterId(), randomString(), t, x.TypeId, null, true); //This type shouldn't care about document
                    Assert.That(parameter, Is.InstanceOf <IDecimalParameter>());
                    IDecimalParameter p = parameter as IDecimalParameter;
                    Assert.That(p.Min, Is.EqualTo(x.Min));
                    Assert.That(p.Max, Is.EqualTo(x.Max));
                }
                foreach (var x in integers)
                {
                    CheckIs(t, x.TypeId, integer: true);
                    Assert.That(t.GetTypeName(x.TypeId), Is.EqualTo(x.Name));

                    IParameter parameter = CheckBasicMake(randomString(), randomParameterId(), randomString(), t, x.TypeId, null, true); //This type shouldn't care about document
                    Assert.That(parameter, Is.InstanceOf <IIntegerParameter>());
                    IIntegerParameter p = parameter as IIntegerParameter;
                    Assert.That(p.Min, Is.EqualTo(x.Min));
                    Assert.That(p.Max, Is.EqualTo(x.Max));
                }
                foreach (var x in enums)
                {
                    CheckIs(t, x.TypeId, enumeration: true);
                    Assert.That(t.GetTypeName(x.TypeId), Is.EqualTo(x.Name));

                    {
                        IParameter parameter = CheckBasicMake(randomString(), randomParameterId(), randomString(), t, x.TypeId, null, true); //This type shouldn't care about document
                        Assert.That(parameter, Is.InstanceOf <IEnumParameter>());
                        IEnumParameter p = parameter as IEnumParameter;
                        Assert.That(p.Options, Is.EquivalentTo(x.Elements.Select(a => a.Guid)));
                    }

                    //Check set parameter creation
                    {
                        IParameter parameter = CheckBasicMake(randomString(), randomParameterId(), randomString(), t, ParameterType.ValueSetType.Of(x.TypeId), null, true); //This type shouldn't care about document
                        Assert.That(parameter, Is.InstanceOf <ISetParameter>());
                        ISetParameter p = parameter as ISetParameter;
                        Assert.That(p.Options, Is.EquivalentTo(x.Elements.Select(a => a.Guid)));
                    }
                }
                foreach (var x in dynamicEnums)
                {
                    CheckIs(t, x.TypeId, dynamicEnum: true);
                    Assert.That(t.GetTypeName(x.TypeId), Is.EqualTo(x.Name));
                    IParameter parameter = CheckBasicMake(randomString(), randomParameterId(), randomString(), t, x.TypeId, null, true); //This type shouldn't care about document
                    Assert.That(parameter, Is.InstanceOf <IDynamicEnumParameter>());
                    IDynamicEnumParameter p = parameter as IDynamicEnumParameter;
                    Assert.That(p.Local, Is.False);
                }
                foreach (var x in localDynamicEnums)
                {
                    CheckIs(t, x.TypeId, localDynamicEnum: true);
                    Assert.That(t.GetTypeName(x.TypeId), Is.EqualTo(x.Name));
                    object     document  = new object();
                    IParameter parameter = CheckBasicMake(randomString(), randomParameterId(), randomString(), t, x.TypeId, document, true);
                    Assert.That(parameter, Is.InstanceOf <IDynamicEnumParameter>());
                    IDynamicEnumParameter p = parameter as IDynamicEnumParameter;
                    Assert.That(p.Local, Is.True);
                }
                foreach (var x in localizedStrings)
                {
                    CheckIs(t, x.TypeId, localizedString: true);
                    Assert.That(t.GetTypeName(x.TypeId), Is.EqualTo(x.Name));
                    object     document  = new object();
                    IParameter parameter = CheckBasicMake(randomString(), randomParameterId(), randomString(), t, x.TypeId, document, false);
                    Assert.That(parameter, Is.InstanceOf <ILocalizedStringParameter>());
                }
                foreach (var x in others)
                {
                    CheckIs(t, x.TypeId);
                    Assert.That(t.GetTypeName(x.TypeId), Is.EqualTo(x.Name));
                    string     name      = randomString();
                    var        id        = randomParameterId();
                    var        def       = randomString();
                    object     document  = new object();
                    IParameter parameter = CheckBasicMake(name, id, def, t, x.TypeId, document, true);
                    Assert.That(x.LastGeneratorParameters, Is.Not.Null);
                    Assert.That(x.LastGeneratorParameters.name, Is.EqualTo(name));
                    Assert.That(x.LastGeneratorParameters.id, Is.EqualTo(id));
                    Assert.That(x.LastGeneratorParameters.defaultValue, Is.EqualTo(def));
                    Assert.That(x.LastGeneratorParameters.document, Is.EqualTo(document));
                    Assert.That(x.LastGeneratorParameters.createdParameter, Is.EqualTo(parameter));
                    x.LastGeneratorParameters = null;
                }

                Assert.That(t.VisibleDecimals, Is.EquivalentTo(decimals));
                Assert.That(t.VisibleDynamicEnums, Is.EquivalentTo(dynamicEnums));
                CheckEnumsMatch(t.VisibleEnums, enums);
                Assert.That(t.VisibleIntegers, Is.EquivalentTo(integers));
                Assert.That(t.VisibleLocalDynamicEnums, Is.EquivalentTo(localDynamicEnums));
                Assert.That(t.VisibleLocalizedStrings, Is.EquivalentTo(localizedStrings));

                var expected = decimals.Select(x => x.TypeId).
                               Concat(integers.Select(x => x.TypeId)).
                               Concat(enums.Select(x => x.TypeId)).
                               Concat(dynamicEnums.Select(x => x.TypeId)).
                               Concat(localDynamicEnums.Select(x => x.TypeId)).
                               Concat(localizedStrings.Select(x => x.TypeId)).
                               Concat(others.Select(x => x.TypeId)).
                               Concat(enums.Select(x => ParameterType.ValueSetType.Of(x.TypeId))).
                               Concat(hiddenEnums.Select(x => x.TypeId)).          //AllTypes includes hidden types
                               Concat(hiddenEnums.Select(x => ParameterType.ValueSetType.Of(x.TypeId))).
                               ToList();

                Assert.That(t.AllTypes, Is.EquivalentTo(expected));
            };

            ParameterType          modifiedType     = null;
            Action <ParameterType> modifiedCallback = x => { Assert.That(modifiedType, Is.Null); modifiedType = x; };

            t.Modified += modifiedCallback;

            CheckDecimals(decimals, t, CheckContents, ref modifiedType);

            CheckIntegers(integers, t, CheckContents, ref modifiedType);

            CheckEnums(enums, t, CheckContents, ref modifiedType, false);

            CheckEnums(hiddenEnums, t, CheckContents, ref modifiedType, true);

            CheckDynamicEnums(dynamicEnums, t, CheckContents, ref modifiedType);

            CheckLocalDynamicEnums(localDynamicEnums, t, CheckContents, ref modifiedType);

            CheckLocalizedStrings(localizedStrings, t, CheckContents, ref modifiedType);

            CheckOthers(others, t, CheckContents, ref modifiedType);
        }
示例#20
0
        /// <summary>
        /// 打开一个相机驱动,
        /// </summary>
        /// <param name="IDa"></param>
        /// <param name="camer_number"></param>
        /// <param name="CameraOpened"></param>
        /// <param name="CameraClosed"></param>
        /// <param name="event_OnConnectLoss"></param>
        /// <param name="event_OnImageGrabbed"></param>
        /// <param name="result"></param>
        public void open_camer(IDaHua IDa, int camer_number, EventHandler <EventArgs> CameraOpened,
                               EventHandler <EventArgs> CameraClosed, delegate_OnConnectLoss event_OnConnectLoss
                               , ref string result)
        {
            try
            {
                int number = 0;
                get_camer_number(ref number);
                if (number > 0)
                {
                    if (camer_number < number)
                    {
                        #region 检测打开的相机是否有配置的数据
                        #region  无用代码
                        //string filename="Camer" + camer_number.ToString();
                        //Config.IniFile.IniFiles inifiles = new Config.IniFile.IniFiles(ref filename,"DaHua", null);
                        //if (File.Exists(inifiles.FileName_Path1))
                        //{
                        //    IDa.CamerIndx1 = Convert.ToInt16(inifiles.ReadString(IDa.ToString(), "CamerIndx1", IDa.CamerIndx1.ToString()));
                        //    IDa.TriggerSourceenum= inifiles.ReadString(IDa.ToString(), "TriggerSourceenum", IDa.TriggerSourceenum);
                        //    IDa.Exposuretime=Convert.ToDouble(inifiles.ReadString(IDa.ToString(), "Exposuretime", IDa.Exposuretime.ToString()));
                        //    IDa.Gainraw=Convert.ToDouble(inifiles.ReadString(IDa.ToString(), "Gainraw", IDa.Gainraw.ToString()));
                        //}
                        //else
                        //{
                        //    inifiles.WriteString(IDa.ToString(), "CamerIndx1", camer_number.ToString());
                        //    inifiles.WriteString(IDa.ToString(), "TriggerSourceenum", IDa.TriggerSourceenum);
                        //    inifiles.WriteString(IDa.ToString(), "Exposuretime", IDa.Exposuretime.ToString());
                        //    inifiles.WriteString(IDa.ToString(), "Gainraw", IDa.Gainraw.ToString());
                        //}
                        #endregion
                        load_DaHua_ShuJu(IDa, camer_number);
                        #endregion
                        IDa.Dev = Enumerator.GetDeviceByIndex(camer_number);
                        // 注册链接时间

                        if (CameraOpened != null)
                        {
                            IDa.Dev.CameraOpened += CameraOpened;
                        }

                        IDa.Dev.ConnectionLost += IDa.OnConnectLoss;;

                        if (CameraClosed != null)
                        {
                            IDa.Dev.CameraClosed += CameraClosed;
                        }

                        if (event_OnConnectLoss != null)
                        {
                            IDa.event_OnConnectLoss += event_OnConnectLoss;
                        }

                        //if (event_OnImageGrabbed != null)
                        //{
                        //    IDa.event_OnImageGrabbed += event_OnImageGrabbed;
                        //}

                        // 打开设备
                        if (!IDa.Dev.Open())
                        {
                            result = "设备打开失败";
                            return;
                        }

                        // 打开Software Trigger
                        // IDa.Dev.TriggerSet.Open(TriggerSourceEnum.Line1);

                        IDa.Dev.TriggerSet.Open(IDa.TriggerSourceenum);

                        /* 设置图像格式 */
                        using (IEnumParameter p = IDa.Dev.ParameterCollection[ParametrizeNameSet.ImagePixelFormat])
                        {
                            p.SetValue("Mono8");
                        }

                        /* 设置曝光 */
                        using (IFloatParameter p = IDa.Dev.ParameterCollection[ParametrizeNameSet.ExposureTime])
                        {
                            p.SetValue(IDa.Exposuretime);
                        }

                        /* 设置增益 */
                        using (IFloatParameter p = IDa.Dev.ParameterCollection[ParametrizeNameSet.GainRaw])
                        {
                            p.SetValue(IDa.Gainraw);
                        }

                        /* 设置缓存个数为8(默认值为16) */
                        IDa.Dev.StreamGrabber.SetBufferCount(8);

                        // 注册码流回调事件
                        //    IDa.Dev.StreamGrabber.ImageGrabbed +=IDa.OnImageGrabbed;

                        /* 开启码流 */
                        if (!IDa.Dev.GrabUsingGrabLoopThread())
                        {
                            MessageBox.Show(@"开启码流失败");
                            return;
                        }
                    }
                    else
                    {
                        result = "绑定相机number大于相机实际个数";
                    }
                }
                else
                {
                    result = "相机驱动个数为零";
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("打开相机报错:" + ex.Message, this.ToString());
            }
        }
示例#21
0
 public static ConnectorPosition Read(IEnumParameter parameter)
 {
     return((new[] { Top, Bottom, Left, Right }).First(a => a.m_guid == parameter.Value));
 }
示例#22
0
        // 打开相机
        private void btnOpen_Click(object sender, EventArgs e)
        {
            try
            {
                // 设备搜索
                List <IDeviceInfo> li = Enumerator.EnumerateDevices();
                if (li.Count > 0)
                {
                    // 获取搜索到的第一个设备
                    m_dev = Enumerator.GetDeviceByIndex(0);

                    // 注册链接时间
                    m_dev.CameraOpened   += OnCameraOpen;
                    m_dev.ConnectionLost += OnConnectLoss;
                    m_dev.CameraClosed   += OnCameraClose;

                    // 打开设备
                    if (!m_dev.Open())
                    {
                        MessageBox.Show(@"连接相机失败");
                        return;
                    }

                    // 打开Software Trigger
                    m_dev.TriggerSet.Open(TriggerSourceEnum.Software);

                    // 设置图像格式
                    using (IEnumParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ImagePixelFormat])
                    {
                        p.SetValue("BayerRG12Packed");
                    }
                    // 设置图片亮度
                    using (IIntegraParameter p = m_dev.ParameterCollection[ParametrizeNameSet.Brightness])
                    {
                        p.SetValue(100);
                    }
                    //设置曝光时间
                    using (IFloatParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ExposureTime])
                    {
                        p.SetValue(50000);
                    }

                    /*
                     * // 设置图片高度
                     * using (IIntegraParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ImageHeight])
                     * {
                     *  p.SetValue(600);
                     * }
                     * // 设置图片宽度
                     * using (IIntegraParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ImageWidth])
                     * {
                     *  p.SetValue(600);
                     * }
                     */

                    // 注册码流回调事件
                    m_dev.StreamGrabber.ImageGrabbed += OnImageGrabbed;

                    // 开启码流
                    if (!m_dev.GrabUsingGrabLoopThread())
                    {
                        MessageBox.Show(@"开启码流失败");
                        return;
                    }

                    m_dev.ExecuteSoftwareTrigger();
                }
            }
            catch (Exception exception)
            {
                Catcher.Show(exception);
            }
        }
示例#23
0
        private void LoadFormInfo()
        {
            try
            {
                halconHelper = new HalconHelper(hWindowControl1.HalconWindow);
                List <IDeviceInfo> li = Enumerator.EnumerateDevices();
                //if (Convert.ToInt32(this.Tag) != -1)
                if (li.Count > 0)
                {
                    m_dev = Enumerator.GetDeviceByIndex(0);
                    //m_dev = Enumerator.GetDeviceByIndex(Convert.ToInt32(this.Tag));
                    // 注册链接时间

                    m_dev.CameraOpened   += OnCameraOpen;
                    m_dev.ConnectionLost += OnConnectLoss;
                    m_dev.CameraClosed   += OnCameraClose;
                    // 打开设备
                    if (!m_dev.Open())
                    {
                        MessageBox.Show(@"连接相机失败");
                        return;
                    }

                    // 关闭Trigger
                    //m_dev.TriggerSet.Close();
                    // 打开Software Trigger
                    m_dev.TriggerSet.Open(TriggerSourceEnum.Software);
                    // 设置图像格式
                    using (IEnumParameter p = m_dev.ParameterCollection[ParametrizeNameSet.ImagePixelFormat])
                    {
                        p.SetValue("Mono8");
                    }

                    // 注册码流回调事件
                    m_dev.StreamGrabber.ImageGrabbed += OnImageGrabbed;

                    // 开启码流
                    if (!m_dev.GrabUsingGrabLoopThread())
                    {
                        MessageBox.Show(@"开启码流失败");
                        return;
                    }
                    else
                    {
                        m_dev.ExecuteSoftwareTrigger();
                    }
                }
                else
                {
                }
                //注册一维码识别完成事件
                halconHelper.Complete += OnComplete;
                halconHelper.Error    += OnError;
                //注册串口接收事件
                serialComm.DateReceived += new Comm.EventHandle(OnDataReceived);
                weightComm.DateReceived += new Comm.EventHandle(OnWeightDataReceived);
            }
            catch (Exception ex)
            {
                Catcher.Show(ex);
            }
        }