public void StartExposure(double Duration, bool Light)
{
//check exposure parameters
tl.LogMessage("StartExposure", "Duration=" + Duration.ToString() + " Light=" + Light.ToString());
if ((Duration < ExposureMin) || (Duration > ExposureMax))
{
tl.LogMessage("StartExposure", "InvalidValueException Duration must be in range [MinExposure;MaxExposure]");
throw new InvalidValueException("StartExposure", Duration.ToString(), "Duration must be in range [MinExposure;MaxExposure]");
}
if ((cameraStartX + cameraNumX) > (ccdWidth / cameraBinX))
{
tl.LogMessage("StartExposure", "InvalidValueException (cameraStartX + cameraNumX) must be < (ccdWidth / cameraBinX)");
throw new InvalidValueException("StartExposure", (cameraStartX + cameraNumX).ToString(), "(cameraStartX + cameraNumX) must be < (ccdWidth / cameraBinX)");
}
if ((cameraStartY + cameraNumY) > (ccdHeight / cameraBinY))
{
tl.LogMessage("StartExposure", "InvalidValueException (cameraStartY + cameraNumY) must be < (ccdHeight / cameraBinY)");
throw new InvalidValueException("StartExposure", (cameraStartY + cameraNumY).ToString(), "(cameraStartY + cameraNumY) must be < (ccdHeight / cameraBinY)");
}
//set camera gain/offset
tl.LogMessage("StartExposure", "Call cameraSetGain from cam85ll01.dll args: gain=" + settingsForm.gain.ToString());
if (cameraSetGain(settingsForm.gain) == false)
{
tl.LogMessage("StartExposure", "Cant set gain to cam85");
throw new ASCOM.InvalidOperationException("Cant set gain to cam85");
}
tl.LogMessage("StartExposure", "Call cameraSetOffset from cam85ll01.dll args: offset=" + settingsForm.offset.ToString());
if (cameraSetOffset(settingsForm.offset) == false)
{
tl.LogMessage("StartExposure", "Cant set offset to cam85");
throw new ASCOM.InvalidOperationException("Cant set offset to cam85");
}
//Save parameters
cameraLastExposureDuration = Duration;
exposureStart = DateTime.Now;
gainState = settingsForm.gain;
offsetState = settingsForm.offset;
onTopState = settingsForm.onTop;
//start exposure
tl.LogMessage("StartExposure", "Call cameraStartExposure from cam85ll01.dll, args: ");
tl.LogMessage("StartExposure", " cameraBinX=" + cameraBinX.ToString() +
" cameraStartX=" + cameraStartX.ToString() +
" cameraStartY=" + cameraStartY.ToString() +
" cameraNumX=" + cameraNumX.ToString() +
" cameraNumY=" + cameraNumY.ToString() +
" Duration=" + Duration.ToString() +
" Light=" + true.ToString());
cameraStartExposure((int)cameraBinX, cameraStartX * cameraBinX, cameraStartY * cameraBinY, cameraNumX * cameraBinX, cameraNumY * cameraBinY, Duration, Light);
}