Beispiel #1
0
        private void startButton_Click(object sender, EventArgs e)
        {
            try
            {
                // Read UI controls
                string cameraName = cameraComboBox.Text;
                selectedAcquisitionType = (ImaqdxAcquisitionType)acquisitionModeComboBox.SelectedItem;
                numBuffersUsed          = (int)numberOfBuffersControl.Value;
                selectedBufferWaitMode  = bufferWaitMode.Text;

                // Open a new session and configure a grab
                _session = new ImaqdxSession(cameraName);
                _session.Acquisition.Configure(selectedAcquisitionType, numBuffersUsed);
                _session.Acquisition.Start();

                // Update UI state
                startButton.Enabled             = false;
                stopButton.Enabled              = true;
                numberOfBuffersControl.Enabled  = false;
                acquisitionModeComboBox.Enabled = false;
                bufferWaitMode.Enabled          = false;
                cameraComboBox.Enabled          = false;

                // Start up background worker to acquire images
                acquisitionWorker.RunWorkerAsync();
            }
            catch (ImaqdxException ex)
            {
                _session.Close();
                _session = null;
                MessageBox.Show(ex.Message, "NI-IMAQdx Error");
            }
        }
Beispiel #2
0
        public static void ConfigureAcquisition(ImaqdxSessionHandle session, ImaqdxAcquisitionType acquisitionType, int bufferCount)
        {
            Debug.Assert(session != null, "The session parameter cannot be null.");
            Debug.Assert(!session.IsInvalid, "The session parameter must be a valid handle.");
            Debug.Assert(bufferCount > 0, "The bufferCount parameter must be greater than zero.");

            bool isContinuous = (acquisitionType == ImaqdxAcquisitionType.Continuous);
            int  status       = NiImaqdxDll.IMAQdxConfigureAcquisition(session, Convert.ToUInt32(isContinuous), (uint)bufferCount);

            ExceptionBuilder.CheckErrorAndThrow(status);
        }
Beispiel #3
0
        //==========================================================================================
        /// <summary>
        /// Configures a low-level acquisition.
        /// </summary>
        /// <param name="acquisitionType">
        /// Specifies whether the acquisition is <see cref="NationalInstruments.Vision.Acquisition.Imaqdx.ImaqdxAcquisitionType.Continuous" crefType="Unqualified"/> or <see cref="NationalInstruments.Vision.Acquisition.Imaqdx.ImaqdxAcquisitionType.SingleShot" crefType="Unqualified"/>.
        /// </param>
        /// <param name="bufferCount">
        /// For a <see cref="NationalInstruments.Vision.Acquisition.Imaqdx.ImaqdxAcquisitionType.SingleShot" crefType="Unqualified"/>, this parameter specifies the number of images to acquire. For a continuous acquisition, this parameter specifies the number of buffers the driver uses internally.
        /// </param>
        /// <exception cref="System.ObjectDisposedException">
        /// The session has been disposed.
        /// </exception>
        /// <exception cref="System.ArgumentOutOfRangeException">
        ///     <paramref name="bufferCount"/> is less than or equal to zero.
        /// </exception>
        //==========================================================================================
        public void Configure(ImaqdxAcquisitionType acquisitionType, int bufferCount)
        {
            _session.ValidateSessionHandle();
            if (!Enum.IsDefined(typeof(ImaqdxAcquisitionType), acquisitionType))
            {
                throw ExceptionBuilder.InvalidEnumArgument("acquisitionType", (int)acquisitionType, typeof(ImaqdxAcquisitionType));
            }
            if (bufferCount <= 0)
            {
                throw ExceptionBuilder.ArgumentOutOfRange("bufferCount");
            }

            ImaqdxSessionManager.ConfigureAcquisition(_session.Handle, acquisitionType, bufferCount);
        }