Ejemplo n.º 1
0
        private void initializeSpectrometer()
        {
            if (spectrometer != null && !backgroundWorkerAcquisition.IsBusy)
            {
                spectrometer.close();
                spectrometer = null;
            }

            if ((spectrometer == null || !spectrometer.isOk()) && !backgroundWorkerAcquisition.IsBusy)
            {
                logger.display("Initializing spectrometer...");
                spectrometer = new SeaBreezeSpectrometer();

                spectrometer.setLogger(logger);

                string version = spectrometer.getVersion();
                if (version != null)
                {
                    this.Text = String.Format("SeaBreeze C# Demo (Demo v{0}) (SeaBreeze v{1})",
                                              Assembly.GetExecutingAssembly().GetName().Version.ToString(),
                                              version);
                }
                else
                {
                    logger.display("Warning: can't get SeaBreeze version number");
                }

                spectrometer.open();
                if (spectrometer.isOk())
                {
                    serialNumber     = spectrometer.getSerialNumber();
                    spectrometerType = spectrometer.getSpectrometerType();
                    pixels           = spectrometer.getPixelCount();
                    wavelengths      = spectrometer.getWavelengths();
                    rawSpectrum      = new double[pixels];

                    logger.display("Successfully claimed {0} with {1} pixels", spectrometerType, pixels);

                    collectionArea = spectrometer.getCollectionArea();
                    irradCal       = spectrometer.getIrradianceCalibration();
                    if (collectionArea <= 0 || irradCal == null)
                    {
                        checkBoxEnableIrradiance.Checked = false;
                        checkBoxEnableIrradiance.Enabled = false;
                    }
                    else
                    {
                        checkBoxEnableIrradiance.Enabled = true;
                        logger.display("Irradiance Collection Area = {0} cm^2", collectionArea);
                    }

                    logger.display("Electrically dark pixel indices:");
                    edcIndices = spectrometer.getEDCIndices();
                    for (int i = 0; i < edcIndices.Length; i++)
                    {
                        logger.display("  [{0}] = {1}", i, edcIndices[i]);
                    }

                    logger.display("Non-Linearity Correction Coefficients:");
                    nlcCoeffs = spectrometer.getNLCCoeffs();
                    if (nlcCoeffs != null)
                    {
                        for (int i = 0; i < nlcCoeffs.Length; i++)
                        {
                            logger.display("  [{0}] = {1}", i, nlcCoeffs[i]);
                        }
                    }

                    // buttonSave.Enabled = true;
                    btnScan.Enabled = true;
                    Refresh();
                }
                else
                {
                    logger.display("Failed to initialize spectrometer");
                    MessageBox.Show(
                        "No usable spectrometer available",
                        "SeaBreeze",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Error,
                        MessageBoxDefaultButton.Button1,
                        MessageBoxOptions.DefaultDesktopOnly,
                        false);
                }
            }
            else
            {
                logger.log("Spectrometer already initialized");
            }
        }