AudioPlaybackBlock::AudioPlaybackBlock(MainController* controller, QString uid) : BlockBase(controller, uid) , m_playNode(nullptr) , m_pauseNode(nullptr) , m_toggleNode(nullptr) , m_activeNode(nullptr) , m_endNode(nullptr) , m_positionNode(nullptr) , m_filePath("") , m_lastPlayNodeValue(0.0) , m_lastPauseNodeValue(0.0) , m_lastToggleNodeValue(0.0) , m_alwaysStartAtBegin(false) , m_loop(false) , m_toggleMode(true) , m_player(this) { m_widthIsResizable = true; m_playNode = createInputNode("playNode"); m_pauseNode = createInputNode("pauseNode"); m_toggleNode = createInputNode("toggleNode"); connect(m_playNode, SIGNAL(dataChanged()), this, SLOT(onPlayNodeValueChanged())); connect(m_pauseNode, SIGNAL(dataChanged()), this, SLOT(onPauseNodeValueChanged())); connect(m_toggleNode, SIGNAL(dataChanged()), this, SLOT(onToggleNodeValueChanged())); m_activeNode = createOutputNode("activeNode"); m_endNode = createOutputNode("endNode"); m_positionNode = createOutputNode("positionNode"); // setup Timer to be able to send a short pulse when end of file is reached: m_endPulseTimer.setSingleShot(true); m_endPulseTimer.setInterval(100); connect(&m_endPulseTimer, SIGNAL(timeout()), this, SLOT(onEndPulseTimeout())); connect(&m_player, SIGNAL(endOfFile()), this, SLOT(onEndOfFile())); connect(&m_player, SIGNAL(isPlayingChanged()), this, SIGNAL(isPlayingChanged())); connect(&m_player, SIGNAL(isPlayingChanged()), this, SLOT(onIsPlayingChanged())); connect(&m_player, SIGNAL(positionChanged()), this, SIGNAL(playbackPositionChanged())); connect(&m_player, SIGNAL(positionChanged()), this, SLOT(onPlaybackPositionChanged())); connect(&m_player, SIGNAL(lengthChanged()), this, SIGNAL(lengthChanged())); connect(&m_waveform, SIGNAL(pointsChanged()), this, SIGNAL(waveformChanged())); connect(&m_waveform, SIGNAL(availableChanged()), this, SIGNAL(waveformChanged())); }
QxrdSynchronizedAcquisitionDialog::QxrdSynchronizedAcquisitionDialog( QxrdSynchronizedAcquisitionDialogSettingsWPtr settings, QWidget *parent, QxrdAcquisitionWPtr acqw) : QDockWidget(parent), m_DialogSettings(settings), m_Acquisition(acqw), m_SynchronizedAcquisition() { if (qcepDebug(DEBUG_CONSTRUCTORS)) { printf("QxrdSynchronizedAcquisitionDialog::QxrdSynchronizedAcquisitionDialog(%p)\n", this); } setupUi(this); QxrdSynchronizedAcquisitionDialogSettingsPtr set(m_DialogSettings); if (set) { m_WaveformPlot->init(set->synchronizedAcquisitionPlotSettings()); } QxrdAcquisitionPtr acq(acqw); if (acq) { m_SynchronizedAcquisition = acq->synchronizedAcquisition(); m_SyncAcqMode -> addItem("None"); m_SyncAcqMode -> addItem("Stepped Output"); m_SyncAcqMode -> addItem("Continuous Output"); m_SyncAcqWfm -> addItem("Square"); m_SyncAcqWfm -> addItem("Sine"); m_SyncAcqWfm -> addItem("Triangle"); m_SyncAcqWfm -> addItem("Sawtooth"); m_SyncAcqWfm -> addItem("Bipolar Triangle"); m_SyncAcqMinimum -> setMinimum(-10.0); m_SyncAcqMinimum -> setMaximum(10.0); m_SyncAcqMinimum -> setSingleStep(0.1); m_SyncAcqMaximum -> setMinimum(-10.0); m_SyncAcqMaximum -> setMaximum(10.0); m_SyncAcqMaximum -> setSingleStep(0.1); m_SyncAcqSymmetry -> setMinimum(-1.0); m_SyncAcqSymmetry -> setMaximum(1.0); m_SyncAcqSymmetry -> setSingleStep(0.1); m_SyncAcqPhaseShift -> setMinimum(-100.0); m_SyncAcqPhaseShift -> setMaximum(100.0); m_SyncAcqPhaseShift -> setSingleStep(1); QxrdSynchronizedAcquisitionPtr sync(m_SynchronizedAcquisition); if (sync) { QxrdNIDAQPluginInterfacePtr nidaq = sync->nidaqPlugin(); if (nidaq) { QStringList devices = nidaq->deviceNames(); foreach(QString device, devices) { QString desc = nidaq->deviceType(device); int isSim = nidaq->deviceIsSimulated(device); QString item = device+" : "+desc; if (isSim) { item += " [simulated]"; } m_SyncAcqOutDevice->addItem(item, device); } } sync -> prop_SyncAcquisitionMode() -> linkTo(m_SyncAcqMode); sync -> prop_SyncAcquisitionWaveform() -> linkTo(m_SyncAcqWfm); sync -> prop_SyncAcquisitionOutputDevice() -> linkTo(m_SyncAcqOutDevice); sync -> prop_SyncAcquisitionOutputChannel() -> linkTo(m_SyncAcqOutChan); sync -> prop_SyncAcquisitionMinimum() -> linkTo(m_SyncAcqMinimum); sync -> prop_SyncAcquisitionMaximum() -> linkTo(m_SyncAcqMaximum); sync -> prop_SyncAcquisitionSymmetry() -> linkTo(m_SyncAcqSymmetry); sync -> prop_SyncAcquisitionPhaseShift() -> linkTo(m_SyncAcqPhaseShift); sync -> prop_SyncAcquisitionManualValue() -> linkTo(m_ManualOutputVolts); connect(sync -> prop_SyncAcquisitionOutputDevice(), SIGNAL(valueChanged(QString,int)), this, SLOT(deviceChanged())); connect(sync -> prop_SyncAcquisitionOutputChannel(), SIGNAL(valueChanged(QString,int)), this, SLOT(waveformChanged())); connect(sync -> prop_SyncAcquisitionMode(), SIGNAL(valueChanged(int,int)), this, SLOT(waveformChanged())); connect(sync -> prop_SyncAcquisitionWaveform(), SIGNAL(valueChanged(int,int)), this, SLOT(waveformChanged())); connect(sync -> prop_SyncAcquisitionMinimum(), SIGNAL(valueChanged(double,int)), this, SLOT(waveformChanged())); connect(sync -> prop_SyncAcquisitionMaximum(), SIGNAL(valueChanged(double,int)), this, SLOT(waveformChanged())); connect(sync -> prop_SyncAcquisitionSymmetry(), SIGNAL(valueChanged(double,int)), this, SLOT(waveformChanged())); connect(sync -> prop_SyncAcquisitionPhaseShift(), SIGNAL(valueChanged(double,int)), this, SLOT(waveformChanged())); connect(m_ManualOutput, SIGNAL(clicked()), sync.data(), SLOT(setManualOutput())); connect(m_ManualTrigger, SIGNAL(clicked()), sync.data(), SLOT(triggerOnce())); } connect(acq->prop_ExposureTime(), SIGNAL(valueChanged(double,int)), this, SLOT(waveformChanged())); connect(acq->prop_PhasesInGroup(), SIGNAL(valueChanged(int,int)), this, SLOT(waveformChanged())); deviceChanged(); waveformChanged(); }