Scope
scope::OutputsDAQmxLineClock Class Reference

#include <OutputsDAQmxLineClock.h>

Inherits scope::Outputs.

Public Member Functions

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

Protected Attributes

DAQmx::CDAQmxAnalogOutTask xpout_task
 
DAQmx::CDAQmxAnalogOutTask yzout_task
 
int32_t XTotalPixels
 
int32_t YTotalLines
 
- 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.

X/Pockels use a pixel clock and Y/Z use a different, a line clock. So you need to NI cards to get this working (since one card can only run one output task with only one clock.

Definition at line 19 of file OutputsDAQmxLineClock.h.

Constructor & Destructor Documentation

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

Creates the tasks and clock tasks.

Definition at line 9 of file OutputsDAQmxLineClock.cpp.

Member Function Documentation

void scope::OutputsDAQmxLineClock::Start ( void  )
overridevirtual

Start task.

Reimplemented from scope::Outputs.

Definition at line 71 of file OutputsDAQmxLineClock.cpp.

void scope::OutputsDAQmxLineClock::Stop ( void  )
overridevirtual

Stops task.

Reimplemented from scope::Outputs.

Definition at line 77 of file OutputsDAQmxLineClock.cpp.

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

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

Depending on the implementation in the derived classes, this _xyzp can be a complete frame or e.g. only one x line (for x and p), one y column (for y and fast z) , which are then repeated by the device.

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 82 of file OutputsDAQmxLineClock.cpp.

Member Data Documentation

DAQmx::CDAQmxAnalogOutTask scope::OutputsDAQmxLineClock::xpout_task
protected

Task for x-scanner/Pockels clocked by the pixel clock from the FPGA.

Definition at line 24 of file OutputsDAQmxLineClock.h.

DAQmx::CDAQmxAnalogOutTask scope::OutputsDAQmxLineClock::yzout_task
protected

Task for y-scanner/fast z clocked by the line clock from the FPGA.

Definition at line 27 of file OutputsDAQmxLineClock.h.

int32_t scope::OutputsDAQmxLineClock::XTotalPixels
protected

Length of a line in samples.

Definition at line 30 of file OutputsDAQmxLineClock.h.

int32_t scope::OutputsDAQmxLineClock::YTotalLines
protected

Length of a column in samples.

Definition at line 33 of file OutputsDAQmxLineClock.h.


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