public override void Close() { if (AndorSdk != null) { AndorSdk.CoolerOFF(); WaitForTemperatureIncrease(ShutdownTemp); AndorSdk.ShutDown(); } }
public virtual void WaitForTemperatureIncrease(int thresholdTemperature) { float currentTemperature = 0; AndorSdk.GetTemperatureF(ref currentTemperature); while (currentTemperature < thresholdTemperature - TemperatureEps) { AndorSdk.GetTemperatureF(ref currentTemperature); } }
public virtual void EquilibrateTemperature(CancellationToken?token = null) { var currentTemperature = 0; var status = AndorSDK.DRV_TEMP_NOT_STABILIZED; while (status != AndorSDK.DRV_TEMP_STABILIZED) { if (token.HasValue && token.Value.IsCancellationRequested) { break; } status = AndorSdk.GetTemperature(ref currentTemperature); } }
public virtual bool EquilibrateUntil(Func <bool> BreakoutCondition, int PollDelayMs) { var currentTemperature = 0; var status = AndorSDK.DRV_TEMP_NOT_STABILIZED; while (status != AndorSDK.DRV_TEMP_STABILIZED) { status = AndorSdk.GetTemperature(ref currentTemperature); if (BreakoutCondition()) { return(true); } Thread.Sleep(PollDelayMs); } return(false); }
public virtual void EquilibrateTemperature(int targetTemperature, CancellationToken?token = null) { if (targetTemperature < MinTemp || targetTemperature > MaxTemp) { throw new ArgumentException("Temperature out of range."); } AndorSdk.SetTemperature(targetTemperature); float currentTemperature = 0; AndorSdk.GetTemperatureF(ref currentTemperature); while (Math.Abs(currentTemperature - targetTemperature) > TemperatureEps) { if (token.HasValue && token.Value.IsCancellationRequested) { break; } AndorSdk.GetTemperatureF(ref currentTemperature); } }
public AndorTempControlled(CameraParameters p) : base(p) { AndorSdk.GetTemperatureRange(ref _MinTemp, ref _MaxTemp); AndorSdk.CoolerON(); EquilibrateTemperature(p.Temperature); }