Example #1
0
        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);
        }