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"); } }
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); }
//========================================================================================== /// <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); }