Scope
|
#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 |
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.
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.
|
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.
|
overridevirtual |
|
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).
[in] | _xyzp | the scannervector with xyzp data to write to device |
[in] | _blocks | in 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.
|
protected |
The DAQmx task for x/y-scanners/fast z/Pockels clocked by a pixel clock.
Definition at line 23 of file OutputsDAQmx.h.