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()));
}
コード例 #2
0
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();
  }