QXRD  0.11.16
Public Member Functions | Private Slots | Private Member Functions | Private Attributes | List of all members
QxrdAcquisitionExtraInputsDialog Class Reference

#include <qxrdacquisitionextrainputsdialog.h>

Inheritance diagram for QxrdAcquisitionExtraInputsDialog:
Inheritance graph
[legend]
Collaboration diagram for QxrdAcquisitionExtraInputsDialog:
Collaboration graph
[legend]

Public Member Functions

 QxrdAcquisitionExtraInputsDialog (QxrdAcquisitionExtraInputsDialogSettingsWPtr set, QWidget *parent, QxrdAcquisitionWPtr acq)
 
 ~QxrdAcquisitionExtraInputsDialog ()
 

Private Slots

void updateUi ()
 
void addChannel ()
 
void removeChannel ()
 
void initiateReadout ()
 
void updateWaveforms ()
 

Private Member Functions

void setupUiChannel (int i, QxrdAcquisitionExtraInputsChannelPtr ch)
 

Private Attributes

QxrdAcquisitionExtraInputsDialogSettingsWPtr m_Settings
 
QxrdAcquisitionWPtr m_Acquisition
 
QxrdAcquisitionExtraInputsWPtr m_AcquisitionExtraInputs
 
int m_ChannelsInRows
 

Detailed Description

Definition at line 10 of file qxrdacquisitionextrainputsdialog.h.

Constructor & Destructor Documentation

QxrdAcquisitionExtraInputsDialog::QxrdAcquisitionExtraInputsDialog ( QxrdAcquisitionExtraInputsDialogSettingsWPtr  set,
QWidget *  parent,
QxrdAcquisitionWPtr  acq 
)
explicit

Definition at line 10 of file qxrdacquisitionextrainputsdialog.cpp.

References addChannel(), DEBUG_CONSTRUCTORS, initiateReadout(), m_Acquisition, m_AcquisitionExtraInputs, m_Settings, QxrdAcquisitionExtraInputs::newDataAvailable(), qcepDebug(), removeChannel(), updateUi(), updateWaveforms(), and QcepStringProperty::valueChanged().

10  :
11  QDockWidget(parent),
12  m_Settings(set),
13  m_Acquisition(acq),
16 {
18  printf("QxrdAcquisitionExtraInputsDialog::QxrdAcquisitionExtraInputsDialog(%p)\n", this);
19  }
20 
21  setupUi(this);
22 
23  connect(m_AddChannel, &QAbstractButton::clicked, this, &QxrdAcquisitionExtraInputsDialog::addChannel);
24  connect(m_RemoveChannel, &QAbstractButton::clicked, this, &QxrdAcquisitionExtraInputsDialog::removeChannel);
25  connect(m_TestReadout, &QAbstractButton::clicked, this, &QxrdAcquisitionExtraInputsDialog::initiateReadout);
26 
28 
29  if (acqp) {
30  m_AcquisitionExtraInputs = acqp->acquisitionExtraInputs();
31 
33 
35 
36  if (xtra) {
37  QxrdNIDAQPluginInterfacePtr nidaq = xtra->nidaqPlugin();
38 
39  if (nidaq) {
40  QStringList devices = nidaq->deviceNames();
41 
42  foreach(QString device, devices) {
43  QString desc = nidaq->deviceType(device);
44  int isSim = nidaq->deviceIsSimulated(device);
45 
46  QString item = device+" : "+desc;
47 
48  if (isSim) {
49  item += " [simulated]";
50  }
51 
52  m_AcquisitionDevice->addItem(item, device);
53  }
54  }
55 
56  xtra->prop_SampleRate()->linkTo(m_SampleRate);
57  xtra->prop_AcquireDelay()->linkTo(m_AcquisitionDelay);
58  xtra->prop_DeviceName()->linkTo(m_AcquisitionDevice);
59 
60  connect(xtra->prop_DeviceName(), &QcepStringProperty::valueChanged,
62 
65  }
66  }
67  }
68 
70 
71  if (setg) {
72  m_AcquisitionWaveforms -> init(setg->plotSettings());
73  }
74 
75  updateUi();
76 }
qint64 qcepDebug(int cond)
Definition: qcepdebug.cpp:26
void valueChanged(QString val, int index)
QSharedPointer< QxrdAcquisition > QxrdAcquisitionPtr
QSharedPointer< QxrdAcquisitionExtraInputsDialogSettings > QxrdAcquisitionExtraInputsDialogSettingsPtr
QxrdAcquisitionExtraInputsWPtr m_AcquisitionExtraInputs
QSharedPointer< QxrdAcquisitionExtraInputs > QxrdAcquisitionExtraInputsPtr
QSharedPointer< QxrdNIDAQPluginInterface > QxrdNIDAQPluginInterfacePtr
QxrdAcquisitionExtraInputsDialogSettingsWPtr m_Settings

Here is the call graph for this function:

QxrdAcquisitionExtraInputsDialog::~QxrdAcquisitionExtraInputsDialog ( )

Definition at line 78 of file qxrdacquisitionextrainputsdialog.cpp.

References DEBUG_CONSTRUCTORS, and qcepDebug().

79 {
81  printf("QxrdAcquisitionExtraInputsDialog::~QxrdAcquisitionExtraInputsDialog(%p)\n", this);
82  }
83 }
qint64 qcepDebug(int cond)
Definition: qcepdebug.cpp:26

Here is the call graph for this function:

Member Function Documentation

void QxrdAcquisitionExtraInputsDialog::addChannel ( )
privateslot

Definition at line 290 of file qxrdacquisitionextrainputsdialog.cpp.

References m_Acquisition, m_AcquisitionExtraInputs, m_ChannelsInRows, and updateUi().

Referenced by QxrdAcquisitionExtraInputsDialog().

291 {
293 
294  if (acqp) {
295  m_AcquisitionExtraInputs = acqp->acquisitionExtraInputs();
296 
298 
300 
301  if (xtra) {
302  int nch = xtra->channels().count();
303 
304  int n = (m_ChannelsInRows ?
305  m_ExtraInputsTable->currentRow() :
306  m_ExtraInputsTable->currentColumn());
307 
308  int ch = (n<0 ? nch-1 : n);
309 
310  QString titleString = tr("New Channel after Channel %1").arg(ch);
311  QString questString = tr("Do you really want to create a new extra input channel after channel %1").arg(ch);
312 
313  int reply = QMessageBox::question(this, titleString, questString,
314  QMessageBox::Ok | QMessageBox::Cancel,
315  QMessageBox::Cancel);
316 
317  if (reply== QMessageBox::Ok) {
318  if (ch < 0) {
319  xtra->appendChannel();
320  } else {
321  xtra->appendChannel(ch);
322  }
323 
324  updateUi();
325  }
326  }
327  }
328  }
329 }
QSharedPointer< QxrdAcquisition > QxrdAcquisitionPtr
QxrdAcquisitionExtraInputsWPtr m_AcquisitionExtraInputs
QSharedPointer< QxrdAcquisitionExtraInputs > QxrdAcquisitionExtraInputsPtr

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdAcquisitionExtraInputsDialog::initiateReadout ( )
privateslot

Definition at line 372 of file qxrdacquisitionextrainputsdialog.cpp.

References m_AcquisitionExtraInputs.

Referenced by QxrdAcquisitionExtraInputsDialog().

373 {
375 
376  if (xtra) {
377  xtra->initiate();
378  }
379 }
QxrdAcquisitionExtraInputsWPtr m_AcquisitionExtraInputs
QSharedPointer< QxrdAcquisitionExtraInputs > QxrdAcquisitionExtraInputsPtr

Here is the caller graph for this function:

void QxrdAcquisitionExtraInputsDialog::removeChannel ( )
privateslot

Definition at line 331 of file qxrdacquisitionextrainputsdialog.cpp.

References m_Acquisition, m_AcquisitionExtraInputs, m_ChannelsInRows, and updateUi().

Referenced by QxrdAcquisitionExtraInputsDialog().

332 {
334 
335  if (acqp) {
336  m_AcquisitionExtraInputs = acqp->acquisitionExtraInputs();
337 
339 
341 
342  if (xtra) {
343  int nch = xtra->channels().count();
344 
345  int n = (m_ChannelsInRows ?
346  m_ExtraInputsTable->currentRow() :
347  m_ExtraInputsTable->currentColumn());
348 
349  int ch = (n<0 ? nch-1 : n);
350 
351  QString titleString = tr("Delete Channel %1").arg(ch);
352  QString questString = tr("Do you really want to delete extra input channel %1").arg(ch);
353 
354  int reply = QMessageBox::question(this, titleString, questString,
355  QMessageBox::Ok | QMessageBox::Cancel,
356  QMessageBox::Cancel);
357 
358  if (reply== QMessageBox::Ok) {
359  if (n < 0) {
360  xtra->removeChannel();
361  } else {
362  xtra->removeChannel(n);
363  }
364 
365  updateUi();
366  }
367  }
368  }
369  }
370 }
QSharedPointer< QxrdAcquisition > QxrdAcquisitionPtr
QxrdAcquisitionExtraInputsWPtr m_AcquisitionExtraInputs
QSharedPointer< QxrdAcquisitionExtraInputs > QxrdAcquisitionExtraInputsPtr

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdAcquisitionExtraInputsDialog::setupUiChannel ( int  i,
QxrdAcquisitionExtraInputsChannelPtr  ch 
)
private

Definition at line 85 of file qxrdacquisitionextrainputsdialog.cpp.

References m_AcquisitionExtraInputs, and m_ChannelsInRows.

Referenced by updateUi().

86 {
87  if (ch) {
88  QCheckBox *cb = new QCheckBox();
89  ch->prop_Enabled()->linkTo(cb);
90 
91  QCheckBox *cb2 = new QCheckBox();
92  ch->prop_Plotted()->linkTo(cb2);
93 
94  QComboBox *nm = new QComboBox();
95 
97 
98  if (xtra) {
99  QString deviceName = xtra->get_DeviceName();
100  QxrdNIDAQPluginInterfacePtr nidaq = xtra->nidaqPlugin();
101 
102  if (nidaq) {
103  QStringList aiChannels = nidaq->deviceAIChannels(deviceName);
104  QStringList ctrChannels = nidaq->deviceCIChannels(deviceName);
105 
106  nm->addItem("Analog Inputs");
107  foreach(QString chan, aiChannels) {
108  nm->addItem(chan, chan);
109  }
110 
111  nm->addItem("Counter Inputs");
112  foreach(QString chan, ctrChannels) {
113  nm->addItem(chan, chan);
114  }
115  }
116  }
117 
118  ch->prop_ChannelName()->linkTo(nm);
119 
120  QComboBox *md = new QComboBox();
121 
122  md->addItem("Sum");
123  md->addItem("Avg");
124  md->addItem("Max");
125  md->addItem("Min");
126 
127  md->setItemData(0, "Value = Sum(wfm)", Qt::ToolTipRole);
128  md->setItemData(1, "Value = Avg(wfm)", Qt::ToolTipRole);
129  md->setItemData(2, "Value = Max(wfm)", Qt::ToolTipRole);
130  md->setItemData(3, "Value = Min(wfm)", Qt::ToolTipRole);
131 
132  ch->prop_Mode()->linkTo(md);
133 
134  QCheckBox *wf = new QCheckBox();
135  ch->prop_SaveWave()->linkTo(wf);
136 
137  QDoubleSpinBox *min = new QDoubleSpinBox();
138  min->setMinimum(-20.0);
139  min->setMaximum(20.0);
140  min->setSingleStep(0.1);
141  ch->prop_Min()->linkTo(min);
142 
143  QDoubleSpinBox *max = new QDoubleSpinBox();
144  max->setMinimum(-20.0);
145  max->setMaximum(20.0);
146  max->setSingleStep(0.1);
147  ch->prop_Max()->linkTo(max);
148 
149  QDoubleSpinBox *stt = new QDoubleSpinBox();
150  stt->setMinimum(-0.2);
151  stt->setMaximum(10.0);
152  stt->setSingleStep(0.1);
153  ch->prop_Start()->linkTo(stt);
154 
155  QDoubleSpinBox *end = new QDoubleSpinBox();
156  end->setMinimum(-0.2);
157  end->setMaximum(10.0);
158  end->setSingleStep(0.1);
159  ch->prop_End()->linkTo(end);
160 
161  QComboBox *tmode = new QComboBox();
162  tmode -> addItem("No Trigger");
163  tmode -> addItem("Positive Edge");
164  tmode -> addItem("Negative Edge");
165  tmode -> addItem("Positive Level");
166  tmode -> addItem("Negative Level");
167  ch->prop_TriggerMode()->linkTo(tmode);
168 
169  QDoubleSpinBox *tlevel = new QDoubleSpinBox();
170  tlevel -> setMinimum(-20.0);
171  tlevel -> setMaximum(+20.0);
172  tlevel -> setSingleStep(0.1);
173  ch->prop_TriggerLevel()->linkTo(tlevel);
174 
175  QDoubleSpinBox *thyst = new QDoubleSpinBox();
176  thyst -> setMinimum(0.0);
177  thyst -> setMaximum(+20.0);
178  thyst -> setSingleStep(0.1);
179  ch->prop_TriggerHysteresis()->linkTo(thyst);
180 
181  QLabel *phy = new QLabel();
182  ch->prop_PhysicalChannel()->linkTo(phy);
183 
184  QLabel *val = new QLabel();
185  ch->prop_Value()->linkTo(val);
186 
187  QCheckBox *trig = new QCheckBox();
188  ch->prop_Triggered()->linkTo(trig);
189 
190  int c = 0;
191 
192  if (m_ChannelsInRows) {
193  m_ExtraInputsTable->setCellWidget(i, c++, cb);
194  m_ExtraInputsTable->setCellWidget(i, c++, cb2);
195  m_ExtraInputsTable->setCellWidget(i, c++, nm);
196  m_ExtraInputsTable->setCellWidget(i, c++, md);
197  m_ExtraInputsTable->setCellWidget(i, c++, wf);
198  m_ExtraInputsTable->setCellWidget(i, c++, min);
199  m_ExtraInputsTable->setCellWidget(i, c++, max);
200  m_ExtraInputsTable->setCellWidget(i, c++, stt);
201  m_ExtraInputsTable->setCellWidget(i, c++, end);
202  m_ExtraInputsTable->setCellWidget(i, c++, tmode);
203  m_ExtraInputsTable->setCellWidget(i, c++, tlevel);
204  m_ExtraInputsTable->setCellWidget(i, c++, thyst);
205  m_ExtraInputsTable->setCellWidget(i, c++, phy);
206  m_ExtraInputsTable->setCellWidget(i, c++, val);
207  m_ExtraInputsTable->setCellWidget(i, c++, trig);
208  } else {
209  m_ExtraInputsTable->setCellWidget(c++, i, cb);
210  m_ExtraInputsTable->setCellWidget(c++, i, cb2);
211  m_ExtraInputsTable->setCellWidget(c++, i, nm);
212  m_ExtraInputsTable->setCellWidget(c++, i, md);
213  m_ExtraInputsTable->setCellWidget(c++, i, wf);
214  m_ExtraInputsTable->setCellWidget(c++, i, min);
215  m_ExtraInputsTable->setCellWidget(c++, i, max);
216  m_ExtraInputsTable->setCellWidget(c++, i, stt);
217  m_ExtraInputsTable->setCellWidget(c++, i, end);
218  m_ExtraInputsTable->setCellWidget(c++, i, tmode);
219  m_ExtraInputsTable->setCellWidget(c++, i, tlevel);
220  m_ExtraInputsTable->setCellWidget(c++, i, thyst);
221  m_ExtraInputsTable->setCellWidget(c++, i, phy);
222  m_ExtraInputsTable->setCellWidget(c++, i, val);
223  m_ExtraInputsTable->setCellWidget(c++, i, trig);
224  }
225  }
226 }
QxrdAcquisitionExtraInputsWPtr m_AcquisitionExtraInputs
QSharedPointer< QxrdAcquisitionExtraInputs > QxrdAcquisitionExtraInputsPtr
QSharedPointer< QxrdNIDAQPluginInterface > QxrdNIDAQPluginInterfacePtr

Here is the caller graph for this function:

void QxrdAcquisitionExtraInputsDialog::updateUi ( )
privateslot

Definition at line 228 of file qxrdacquisitionextrainputsdialog.cpp.

References GUI_THREAD_CHECK, m_Acquisition, m_AcquisitionExtraInputs, m_ChannelsInRows, and setupUiChannel().

Referenced by addChannel(), QxrdAcquisitionExtraInputsDialog(), and removeChannel().

229 {
231 
233 
234  if (acqp) {
235  m_AcquisitionExtraInputs = acqp->acquisitionExtraInputs();
236 
238 
240 
241  if (xtra) {
242  int nInputs = xtra->channels().count();
243 
244  m_ExtraInputsTable->clear();
245 
246  QStringList labels;
247 
248  labels << "Enabled" << "Plotted" << "Device Name" << "Mode" << "SaveWfm?"
249  << "Min V" << "Max V"
250  << "Start" << "End"
251  << "Trigger Mode" << "Trigger Level" << "Trigger Hysteresis"
252  << "Phys Chan" << "Value" << "Triggered?";
253 
254  QStringList chanLabels;
255 
256  for (int i=0; i<nInputs; i++) {
257  chanLabels << tr("Chan %1").arg(i);
258  }
259 
260  if (m_ChannelsInRows) {
261  m_ExtraInputsTable->setRowCount(nInputs);
262  m_ExtraInputsTable->setColumnCount(labels.count());
263  } else {
264  m_ExtraInputsTable->setRowCount(labels.count());
265  m_ExtraInputsTable->setColumnCount(nInputs);
266  }
267 
268  for (int i=0; i<nInputs; i++) {
269  setupUiChannel(i, xtra->channels().value(i));
270  }
271 
272 
273  if (m_ChannelsInRows) {
274  m_ExtraInputsTable->setHorizontalHeaderLabels(labels);
275  m_ExtraInputsTable->setVerticalHeaderLabels(chanLabels);
276  } else {
277  m_ExtraInputsTable->setHorizontalHeaderLabels(chanLabels);
278  m_ExtraInputsTable->setVerticalHeaderLabels(labels);
279  }
280 
281  if (m_ExtraInputsTable->columnCount() && m_ExtraInputsTable->rowCount()) {
282  m_ExtraInputsTable->resizeColumnsToContents();
283  m_ExtraInputsTable->resizeRowsToContents();
284  }
285  }
286  }
287  }
288 }
QSharedPointer< QxrdAcquisition > QxrdAcquisitionPtr
#define GUI_THREAD_CHECK
Definition: qcepmacros.h:10
QxrdAcquisitionExtraInputsWPtr m_AcquisitionExtraInputs
QSharedPointer< QxrdAcquisitionExtraInputs > QxrdAcquisitionExtraInputsPtr
void setupUiChannel(int i, QxrdAcquisitionExtraInputsChannelPtr ch)

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdAcquisitionExtraInputsDialog::updateWaveforms ( )
privateslot

Definition at line 381 of file qxrdacquisitionextrainputsdialog.cpp.

References m_AcquisitionExtraInputs.

Referenced by QxrdAcquisitionExtraInputsDialog().

382 {
384 
385  if (xtra) {
386  int nchan = xtra->channels().count();
387 
388  m_AcquisitionWaveforms->setNChannels(nchan);
389 
390  for (int i=0; i<nchan; i++) {
391  QxrdAcquisitionExtraInputsChannelPtr chanp(xtra->channel(i));
392 
393  if (chanp && chanp->get_Enabled() && chanp->get_Plotted()) {
394  m_AcquisitionWaveforms->plotChannel(i,
395  chanp->startIndex(),
396  chanp->endIndex(),
397  xtra->readXChannel(),
398  xtra->readChannel(i));
399  } else {
400  m_AcquisitionWaveforms->plotChannel(i, 0, 0, QcepDoubleVector(), QcepDoubleVector());
401  }
402  }
403 
404  m_AcquisitionWaveforms->replot();
405  }
406 }
QxrdAcquisitionExtraInputsWPtr m_AcquisitionExtraInputs
QVector< double > QcepDoubleVector
Definition: qcepmacros.h:19
QSharedPointer< QxrdAcquisitionExtraInputs > QxrdAcquisitionExtraInputsPtr
QSharedPointer< QxrdAcquisitionExtraInputsChannel > QxrdAcquisitionExtraInputsChannelPtr

Here is the caller graph for this function:

Member Data Documentation

QxrdAcquisitionWPtr QxrdAcquisitionExtraInputsDialog::m_Acquisition
private
QxrdAcquisitionExtraInputsWPtr QxrdAcquisitionExtraInputsDialog::m_AcquisitionExtraInputs
private
int QxrdAcquisitionExtraInputsDialog::m_ChannelsInRows
private
QxrdAcquisitionExtraInputsDialogSettingsWPtr QxrdAcquisitionExtraInputsDialog::m_Settings
private

Definition at line 29 of file qxrdacquisitionextrainputsdialog.h.

Referenced by QxrdAcquisitionExtraInputsDialog().


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