Example #1
0
        public AndorCamera(CameraParameters p)
        {
            if (p == null)
            {
                throw new ArgumentException();
            }

            if (p.Dir != null)
            {
                InitVal = AndorSdk.Initialize(p.Dir);
                AndorSdk.GetCapabilities(ref Capabilities);
                AndorSdk.FreeInternalMemory();
                AndorSdk.GetDetector(ref _Width, ref _Height);

                AndorSdk.GetNumberADChannels(ref _NumberADChannels);
                ADChannel = DefaultADChannel;

                AndorSdk.GetBitDepth(ADChannel, ref _BitDepth);
                SaturationLevel = p.SaturationLevel;

                AndorSdk.GetMaximumBinning(ReadModeImage, 0, ref _MaxHorizontalBinSize);
                AndorSdk.GetMaximumBinning(ReadModeImage, 1, ref _MaxVerticalBinSize);

                _Image = new ImageArea(1, 1, 0, Width, 0, Height);
                Image  = p.Image;

                GateMode  = Constants.GatingModeSMBOnly;
                MCPGating = 1; // enable the MCP

                AndorSdk.GetMCPGainRange(ref _MinMCPGain, ref _MaxMCPGain);
                IntensifierGain = p.InitialGain;

                AcquisitionMode = AcquisitionModeSingle;
                TriggerMode     = TriggerModeExternal;
                DDGTriggerMode  = DDGTriggerModeExternal;
                ReadMode        = p.ReadMode;

                // quick hack for optimal camera setting for spectroscopy
                AndorSdk.SetHighCapacity(0);      // Note: 0 enables high sensitivity.
                AndorSdk.SetPreAmpGain(2);        // 2 = 4x , 1 = 2x, 0 = 1x;
                AndorSdk.SetDDGInsertionDelay(1); // set to fast insertion delay, intelligate off.
            }

            LoadCalibration(p.CalFile);

            p.Image    = Image;
            p.ReadMode = ReadMode;
        }