Eventi generici di variabili e oggetti

Introduzione

Di seguito sono descritti gli eventi esposti dalle classi IUAVariable e IUAObject.

IUAVariable.VariableChange

Si verifica quando cambia il valore della variabile di progetto a cui fa riferimento l’oggetto C# di tipo IUAVariable.

Importante

se la variabile di progetto fa riferimento a una variabile di campo, l’evento viene generato solo se si mantiene la variabile di progetto sincronizzata con il campo tramite un oggetto di tipo RemoteVariableSynchronizer (vedere Costruttore RemoteVariableSynchronizer()), a meno che in Q Studio esista già un collegamento a una variabile di tipo Tag da un oggetto grafico, da un oggetto Data logger, da un allarme o da un oggetto Schema ricetta. In questo caso in un NetLogic è possibile sottoscrivere il metodo di cambio valore direttamente sulla variabile di tipo Tag collegata.

event EventHandler<VariableChangeEventArgs> VariableChange;

Gestore eventi

Il gestore eventi VariableChange, la cui firma è riportata di seguito, permette di sottoscrivere un metodo all’omonimo evento.

public delegate void VariableChange(object sender, VariableChangeEventArgs e);

Argomenti del gestore eventi

sender object

Oggetto C# corrispondente al nodo origine dell’evento.

e VariableChangeEventArgs

Oggetto C# che contiene le seguenti proprietà:

  • variable IUAVariable: variabile di progetto che ha generato l’evento

  • newValue UAValue: nuovo valore della variabile

  • oldValue UAValue: valore precedente della variabile

  • indexes uint[]: (solo per array) indici delle celle dell’array in cui è cambiato il valore.

    Nota

    la proprietà è vuota se cambia il valore in ogni cella o se la variabile di progetto è scalare.

Esempio

Di seguito un esempio in cui si esegue il metodo Variable1_VariableChange ogni volta che la variabile di progetto Variable1 cambia valore.

public override void Start()
{
    var variable1 = Project.Current.GetVariable("Model/Variable1");
    variable1.VariableChange += Variable1_VariableChange;
}

private void Variable1_VariableChange(object sender, VariableChangeEventArgs e)
{
    var label1 = Owner.Get<Label>("Label1");
    label1.Text = "Value of " + e.Variable.BrowseName + " changed from " + e.OldValue + " to " + e.NewValue;
}

IUAObject.UAEvent

Si verifica quando l’oggetto di progetto a cui fa riferimento l’oggetto C# di tipo IUAObject genera un qualsiasi evento OPC UA.

event EventHandler<UAEventArgs> UAEvent;

Gestore eventi

public delegate void UAEvent(object sender, UAEventArgs e);

Argomenti del gestore eventi

sender object

Oggetto C# corrispondente all’oggetto di progetto origine dell’evento.

e UAEventArgs

Oggetto C# che contiene le seguenti proprietà:

  • EventType IUAObjectType: nodo del tipo di evento generato

  • Arguments UAEventArgumentList: oggetto C# che contiene gli argomenti dell’evento generato

Esempio

Di seguito un esempio in cui si esegue il metodo Button1_UAEvent ogni volta che il pulsante di progetto Button1 genera un qualsiasi evento (ad esempio, OnMouseClick, OnMOuseDown o OnMOuseUp).

public override void Start()
{
    var button1 = Owner.Get<Button>("Button1");
    button1.UAEvent += Button1_UAEvent;
}

private void Button1_UAEvent(object sender, UAEventArgs e)
{
    var label1 = Owner.Get<Label>("Label1");
    var button1 = (Button)sender;
    label1.Text = "Event on " + button1.BrowseName + " of type " + e.EventType.BrowseName + " , ";
}

Vedi anche

Procedure correlate

Sottoscrivere metodi a eventi