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’eventonewValue
UAValue: nuovo valore della variabileoldValue
UAValue: valore precedente della variabileindexes
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 generatoArguments
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 + " , ";
}