Anpassen der Aufnahme

Aufnahmeeinstellungen oder Methoden um die Aufnahme zu starten, zu stoppen und auch um die Werte abspeichern zu können, gibt es in der ScopeProject-Klasse, welche bereits im ersten Schritt erstellt wurde.

Um eine Aufnahme zu starten, sollte zuerst kontrolliert werden, ob noch Daten vorhanden sind. Ist dies der Fall, können diese mit Disconnect gelöscht werden. Danach kann mit der Methode „StartRecord“ beim ScopeProject die Aufnahme gestartet werden.

private void btnStart_Click(object sender, EventArgs e)
{
  try
  {
    //discard old data
    if (scopeProjectPanel.ScopeProject.ScopeState == TwinCAT.Measurement.Scope.API.ScopeViewState.Reply)
      scopeProjectPanel.ScopeProject.Disconnect(false);

    //start record
    if (scopeProjectPanel.ScopeProject.ScopeState == TwinCAT.Measurement.Scope.API.ScopeViewState.Config)
      scopeProjectPanel.ScopeProject.StartRecord();
  }
  catch (Exception err)
  {
    MessageBox.Show(this, err.Message, "Error on start record!",MessageBoxButtons.OK, MessageBoxIcon.Error);
  }
}

Um eine Aufnahme zu stoppen, wird auf dem ScopeProject die Methode “StopRecord” aufgerufen. Bevor dies ausgefühlt wird, kann noch kontrolliert werden, ob eine Aufnahme läuft. Ist dies der Fall steht der ScopeState im ScopeProject auf Record.

private void btnStop_Click(object sender, EventArgs e)
{
  try
  {
    if (scopeProjectPanel.ScopeProject.ScopeState == TwinCAT.Measurement.Scope.API.ScopeViewState.Record)
    {
      scopeProjectPanel.ScopeProject.StopRecord();
    }
  }
  catch (Exception err)
  {
    MessageBox.Show(this, err.Message, "Error on stop record!",MessageBoxButtons.OK, MessageBoxIcon.Error);
  }
}

Bevor die Anwendung geschlossen wird, sollte zuerst eine laufende Aufnahme gestoppt werden und die Anwendung sollte sauber vom Scope Server getrennt werden.

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
  if (scopeProjectPanel != null && scopeProjectPanel.ScopeProject != null)
  {
    if (scopeProjectPanel.ScopeProject.ScopeState == TwinCAT.Measurement.Scope.API.ScopeViewState.Record)
    {
      scopeProjectPanel.ScopeProject.StopRecord();
    }
    if (scopeProjectPanel.ScopeProject.ScopeState == TwinCAT.Measurement.Scope.API.ScopeViewState.Reply)
    {
      scopeProjectPanel.ScopeProject.Disconnect();
    }
  }
}