namespace OINA.Extender.Testharness { using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using OINA.Extender; using OINA.Extender.Acquisition.Ed; using OINA.Extender.Acquisition.Image; using OINA.Extender.Acquisition.Quant; using OINA.Extender.DetectorControl; using OINA.Extender.MonitorControl; using OINA.Extender.Processing; using OINA.Extender.Processing.Ed; using OINA.Extender.Processing.Quant; /// /// OI Helper Static Class /// public static class OIHelper { /// /// IEdSpectrumAcquisitionController object /// private static IEdSpectrumAcquisitionController edSpectrumController; /// /// Controller for quant calibration /// private static IQuantCalibrationController quantCalibrationController; /// /// Settings for quant calibration /// private static IQuantCalibrationSettings quantCalibrationSettings; /// /// IEdSpectrumSettings object /// private static IEdSpectrumSettings edSpectrumSettings; /// /// IEdSpectrumProcessing object /// private static IEdSpectrumProcessing edSpectrumProcessing; /// /// IAutoIdSettings object /// private static IAutoIdSettings autoIdSettings; /// /// Semquantsettings object /// private static ISEMQuantSettings semQuantSettings; /// /// MonitorControl object /// private static IMonitoringController monitorControl; /// /// IImageAcquisitionController object /// private static IImageAcquisitionController imageController; /// /// IImageSettings object /// private static IImageAcquisitionSettings imageAcquisitionSettings; /// /// IEdDetectorControl object /// private static IEdDetectorControl edDetectorControl; /// /// Gets EdSpectrum Acquisition Controller /// public static IEdSpectrumAcquisitionController EdSpectrumAcquisitionController { get { if (edSpectrumController == null) { edSpectrumController = AcquireFactory.CreateEdSpectrumServer(); } return edSpectrumController; } } /// /// Gets QuantCalibrationController Controller /// public static IQuantCalibrationController QuantCalibrationController { get { if (quantCalibrationController == null) { quantCalibrationController = AcquireFactory.CreateQuantCalibrationController(); } return quantCalibrationController; } } /// /// Gets QuantCalibrationController Controller /// public static IQuantCalibrationSettings QuantCalibrationSettings { get { if (quantCalibrationSettings == null) { quantCalibrationSettings = AcquireFactory.CreateQuantCalibrationSettings(); } return quantCalibrationSettings; } } /// /// Gets EdSpectrum Settings /// public static IEdSpectrumSettings EdSpectrumSettings { get { if (edSpectrumSettings == null) { edSpectrumSettings = AcquireFactory.CreateEdSpectrumSettings(); } return edSpectrumSettings; } } /// /// Gets EdSpectrum Processing /// public static IEdSpectrumProcessing EdSpectrumProcessing { get { if (edSpectrumProcessing == null) { edSpectrumProcessing = ProcessingFactory.CreateSpectrumProcessing(); } return edSpectrumProcessing; } } /// /// Gets AutoId Settings /// public static IAutoIdSettings AutoIdSettings { get { if (autoIdSettings == null) { autoIdSettings = ProcessingFactory.CreateAutoIdSettings(); } return autoIdSettings; } } /// /// Gets SEM Quant Settings /// public static ISEMQuantSettings SEMQuantSettings { get { if (semQuantSettings == null) { semQuantSettings = ProcessingFactory.CreateSEMQuantSettings(); } return semQuantSettings; } } /// /// Gets Monitoring Controller /// public static IMonitoringController MonitoringController { get { if (monitorControl == null) { monitorControl = AcquireFactory.CreateMonitorControl(); } return monitorControl; } } /// /// Gets Image Acquisition Controller /// public static IImageAcquisitionController ImageAcquisitionController { get { if (imageController == null) { imageController = AcquireFactory.CreateImageServer(); } return imageController; } } /// /// Gets Image Acquisition Settings /// public static IImageAcquisitionSettings ImageSettings { get { if (imageAcquisitionSettings == null) { imageAcquisitionSettings = AcquireFactory.CreateImageSettings(); } return imageAcquisitionSettings; } } /// /// Gets Image Acquisition Settings /// public static IEdDetectorControl EdDetectorControl { get { if (edDetectorControl == null) { edDetectorControl = AcquireFactory.CreateEdDetectorControl()[0]; } return edDetectorControl; } } /// /// Read a file to a byte array /// /// file path /// byte[] data public static byte[] FileToByteArray(string filePath) { if (!File.Exists(filePath)) { throw new System.InvalidOperationException("File does not exists!"); } FileStream fs = File.OpenRead(filePath); { byte[] data = new byte[fs.Length]; fs.Read(data, 0, (int)fs.Length); fs.Close(); return data; } } /// /// Save a byte array to a file /// /// file path /// data public static void ByteArrayToFile(string filePath, byte[] data) { // If file already exists, delete it. if (File.Exists(filePath)) { File.Delete(filePath); } using (FileStream fs = File.Create(filePath)) { fs.Write(data, 0, data.Length); } } /// /// Gets a collection of scan sizes that are allowed by the pixel sizes of the ScanCapabilities. /// /// The Minimum Pixel Size /// The Maximum Pixel Size /// An ICollection[double] of the scan sizes internal static ICollection GetScanSizes(double minimumPixelSize, double maximumPixelSize) { var scanSizesCollection = new Collection(); int scanSize = 32, minScanSize = (int)(1d / maximumPixelSize), maxScanSize = (int)(1d / minimumPixelSize); while (scanSize > minScanSize && scanSize <= maxScanSize) { scanSizesCollection.Add(scanSize); scanSize *= 2; } return scanSizesCollection; } } }