Esempio n. 1
0
        /// <summary>
        /// Initializes camera and parses configuration to set camera parameters.
        /// </summary>
        /// <remarks>Different parameters are separated by semicolon (;), entries for list-parameters are separated by vertical hyphen (|).</remarks>
        public SimpleViewer()
        {
            InitializeComponent();
            // load camera DLL
            try
            {
                CameraManagement.ScanForCameraDLLs = false;
                CameraManagement.ScanAssembly(Properties.Settings.Default.CameraDLLPath);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Could not load camera library " + Properties.Settings.Default.CameraDLLPath + Environment.NewLine + ex.Message, "Error");
                buttonConfigure.Enabled = false;
                buttonConnect.Enabled   = false;
                return;
            }
            // construct camera object
            string dummy;

            try
            {
                cam = CameraManagement.GetCameraInstanceByName(Properties.Settings.Default.CameraName, out dummy);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Could not initialize camera driver." + Environment.NewLine + ex.Message, "Error");
                buttonConfigure.Enabled = false;
                buttonConnect.Enabled   = false;
                return;
            }
            buttonConnect.Text = txtConnect;
            try
            {
                // set pre-connect parameters
                string[] preConnectSettings = Properties.Settings.Default.PreConnectParameters.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                foreach (string preConnectSetting in preConnectSettings)
                {
                    string[] settingNameValuePair    = preConnectSetting.Split('=');
                    MetriCam2.Camera.ParamDesc param = cam.GetParameter(settingNameValuePair[0]);
                    if (param.Type == typeof(string))
                    {
                        cam.SetParameter(settingNameValuePair[0], settingNameValuePair[1]);
                    }
                    else if (param.Type == typeof(List <string>))
                    {
                        List <string> paramValue = new List <string>(settingNameValuePair[1].Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries));
                        cam.SetParameter(settingNameValuePair[0], paramValue);
                    }
                    else
                    {
                        // if this doesn't work, additional conversion should be tried.
                        cam.SetParameter(settingNameValuePair[0], settingNameValuePair[1]);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Setting pre-connect parameters failed." + Environment.NewLine + ex.Message, "Error");
                buttonConfigure.Enabled = false;
                buttonConnect.Enabled   = false;
                return;
            }
        }