示例#1
0
        public DummyAndorCamera(CameraParameters p)
        {
            if (p == null)
            {
                throw new ArgumentException("Non-null CameraParameters instance required");
            }

            _MinTemp    = -100;
            _MaxTemp    = 100;
            _Width      = 1024;
            _Height     = 256;
            _Image      = new ImageArea(1, 1, 0, Width, 0, Height);
            Image       = p.Image;
            Calibration = Enumerable.Range(0, Width).Select(x => (double)x).ToArray();
            LoadCalibration(p.CalFile);
            MinIntensifierGain = 0;
            MaxIntensifierGain = 4095;
            IntensifierGain    = p.InitialGain;
            ReadMode           = p.ReadMode;
            p.Image            = Image;
            p.ReadMode         = ReadMode;
            _Temperature       = 25.0F; // Room temperature.
            Cts = new CancellationTokenSource();
            Task.Run(() =>
            {
                while (true)
                {
                    if (Cts.IsCancellationRequested)
                    {
                        break;
                    }
                    _Temperature += 0.01F * (_TargetTemperature - _Temperature);
                    Thread.Sleep(10);
                }
            }, Cts.Token);
            EquilibrateTemperature(p.Temperature);
        }
示例#2
0
 public override void Update(CameraParameters p)
 {
     base.Update(p);
     EquilibrateTemperature(p.Temperature);
 }
示例#3
0
 public static ICamera CreateCamera(CameraParameters p)
 {
     return((ICamera)Activator.CreateInstance(p.Type, p));
 }
示例#4
0
 public AndorTempControlled(CameraParameters p) : base(p)
 {
     AndorSdk.GetTemperatureRange(ref _MinTemp, ref _MaxTemp);
     AndorSdk.CoolerON();
     EquilibrateTemperature(p.Temperature);
 }