public bool StartMeasurement(IntPtr windowHandle, double integrationTime, uint numAverages, short numMeasurements, uint delayMs = 0, bool externalTrigger = false) { bool result = false; //Prepare Measurement Avaspec.MeasConfigType l_PrepareMeasData = new Avaspec.MeasConfigType(); l_PrepareMeasData.m_StartPixel = StartPixel; l_PrepareMeasData.m_StopPixel = EndPixel; l_PrepareMeasData.m_IntegrationTime = (float)integrationTime; //double l_NanoSec = System.Convert.ToDouble(edtIntegrationDelay.Text); //uint l_FPGAClkCycles = (uint)(6.0 * (l_NanoSec + 20.84) / 125.0); l_PrepareMeasData.m_IntegrationDelay = delayMs == 0 ? 1 : (uint)(delayMs * 1000000 / 20.83); //each unit = 20.83ns l_PrepareMeasData.m_NrAverages = numAverages; l_PrepareMeasData.m_Trigger.m_Mode = externalTrigger == false ? (byte)0 : (byte)1; //1=hardware l_PrepareMeasData.m_Trigger.m_Source = (byte)0; //0=external trigger l_PrepareMeasData.m_Trigger.m_SourceType = (byte)0; //0=edge l_PrepareMeasData.m_SaturationDetection = 1; l_PrepareMeasData.m_CorDynDark.m_Enable = 1; l_PrepareMeasData.m_CorDynDark.m_ForgetPercentage = 100; l_PrepareMeasData.m_Smoothing.m_SmoothPix = 0; l_PrepareMeasData.m_Smoothing.m_SmoothModel = 0; l_PrepareMeasData.m_Control.m_StrobeControl = 0; //l_NanoSec = System.Convert.ToDouble(edtLaserDelay.Text); //l_FPGAClkCycles = (uint)(6.0 * l_NanoSec / 125.0); l_PrepareMeasData.m_Control.m_LaserDelay = 0;// l_FPGAClkCycles; //l_NanoSec = System.Convert.ToDouble(edtLaserWidth.Text); //l_FPGAClkCycles = (uint)(6.0 * l_NanoSec / 125.0); l_PrepareMeasData.m_Control.m_LaserWidth = 0;// l_FPGAClkCycles; l_PrepareMeasData.m_Control.m_LaserWaveLength = 0; l_PrepareMeasData.m_Control.m_StoreToRam = 0; int l_Res = (int)Avaspec.AVS_PrepareMeasure((IntPtr)_deviceHandle, ref l_PrepareMeasData); if (Avaspec.ERR_SUCCESS == l_Res) { //Start Measurement l_Res = (int)Avaspec.AVS_Measure((IntPtr)_deviceHandle, windowHandle, numMeasurements); result = (Avaspec.ERR_SUCCESS == l_Res); } return(result); }