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"); } }