Scope
scope::OutputsDAQmx Class Reference

#include <OutputsDAQmx.h>

Inherits scope::Outputs.

Public Member Functions

 OutputsDAQmx (const uint32_t &_area, const parameters::OutputsDAQmx &_outputparams, const parameters::Scope &_params)
 
 ~OutputsDAQmx ()
 
void Start () override
 
void Stop () override
 
int32_t Write (const std::vector< int16_t > &_xyzp, const uint32_t &_blocks=1) override
 
- Public Member Functions inherited from scope::Outputs
 Outputs (const uint32_t &_area)
 
virtual void AbortWrite ()
 

Protected Attributes

DAQmx::CDAQmxAnalogOutTask task
 
- Protected Attributes inherited from scope::Outputs
const uint32_t area
 
std::atomic< bool > writeabort
 

Detailed Description

Wraps hardware connection for signal output to scanners, fast z control, and pockels cell with NI-DAQmx.

Definition at line 18 of file OutputsDAQmx.h.

Constructor & Destructor Documentation

scope::OutputsDAQmx::OutputsDAQmx ( const uint32_t &  _area,
const parameters::OutputsDAQmx _outputparams,
const parameters::Scope _params 
)

Creates the task for scanner, pockels, and fast-z output with NI DAQmx.


Configure sample timings for output tasks. With DaqTiming ReferenceClock both tasks use the onboard oscillator (empty timing source string) which is synchronized to the PXI 10MHz backplane clock used as reference clock. Read http://www.ni.com/white-paper/3615/en, "M Series Synchronization with LabVIEW and NI-DAQmx" at NI Developer Zone.
Configures the triggering for the output tasks. Since all output&input tasks have to start synchronously, the start trigger for all is the /ao/StartTrigger signal of the first area's analog output task

Definition at line 10 of file OutputsDAQmx.cpp.

scope::OutputsDAQmx::~OutputsDAQmx ( )

Stop and clear output task.

Definition at line 62 of file OutputsDAQmx.cpp.

Member Function Documentation

void scope::OutputsDAQmx::Start ( void  )
overridevirtual

Start task, last the first output task (all other are waiting for it as their start trigger).

Reimplemented from scope::Outputs.

Definition at line 67 of file OutputsDAQmx.cpp.

void scope::OutputsDAQmx::Stop ( void  )
overridevirtual

Stop task.

Reimplemented from scope::Outputs.

Definition at line 71 of file OutputsDAQmx.cpp.

int32_t scope::OutputsDAQmx::Write ( const std::vector< int16_t > &  _xyzp,
const uint32_t &  _blocks = 1 
)
overridevirtual

Writes values for one frame of X-Y-fastZ and pockels data to the device buffer.

Use several WriteAnalogI16 commands with small parts (blocks) of the whole ScannerVectorFrame to speed up the update (do not have to wait until the complete buffer is empty/ready for writing into).

Parameters
[in]_xyzpthe scannervector with xyzp data to write to device
[in]_blocksin how many blocks should the scannervector be written (more blocks faster update, since smaller blocksize -> buffer for this is free earlier), see "DAQmx quick buffer update.vi"

Reimplemented from scope::Outputs.

Definition at line 76 of file OutputsDAQmx.cpp.

Member Data Documentation

DAQmx::CDAQmxAnalogOutTask scope::OutputsDAQmx::task
protected

The DAQmx task for x/y-scanners/fast z/Pockels clocked by a pixel clock.

Definition at line 23 of file OutputsDAQmx.h.


The documentation for this class was generated from the following files: