API per mantenere sincronizzate variabili di campo

Introduzione

Per mantenere sincronizzate variabili di progetto riferite a variabili di campo di interesse è necessario aggiungere tali variabili di progetto in un oggetto di tipo RemoteVariableSynchronizer, di cui di seguito si descrive il costruttore e i relativi metodi di classe.

L’oggetto è necessario per realizzare logiche C# legate al cambio valore delle variabili di campo (vedere IUAVariable.VariableChange).

Costruttore RemoteVariableSynchronizer()

Crea un oggetto di tipo RemoteVariableSynchronizer, può contenere una lista di variabili di progetto da mantenere sincronizzate con le relative variabili di campo.

public RemoteVariableSynchronizer()

Esempio

Di seguito un esempio in cui si crea un oggetto variableSynchronizer per mantenere il valore di una variabile di progetto Speed sincronizzato con il valore di una variabile di campo che identifica la velocità di un motore. La variabile di progetto, rappresentata dall’oggetto motorSpeed, viene aggiunta all’oggetto variableSynchronizer tramite metodo Add() (vedere RemoteVariableSynchronizer.Add(variables)).

Quando la variabile di campo cambia valore viene eseguito il metodo motorSpeed_VariableChange. Quando il valore di motorSpeed, ovvero della variabile di campo, è superiore a 200, viene generato un messaggio di avvertimento.

Nel metodo Stop() è esplicitata tramite invocazione del metodo Dispose() la terminazione della sincronizzazione quando viene rimosso il nodo padre del NetLogic.

Importante

l’oggetto di tipo RemoteVariableSynchronizer dev’essere dichiarato come membro di classe all’interno del NetLogic.

public class SpeedCheckerLogic : BaseNetLogic
{
    public override void Start()
    {
        motorSpeed = LogicObject.Owner.GetVariable("Speed");

        variableSynchronizer = new RemoteVariableSynchronizer();
        variableSynchronizer.Add(motorSpeed);
        variableSynchronizer.motorSpeed.VariableChange += motorSpeed_VariableChange;
   }

   private void motorSpeed_VariableChange(motorSpeed)
   {
       if (motorSpeed > 200)
       {
            Log.Warning("Speed limit reached!");
       }
   }

   private IUAVariable motorSpeed;
   private RemoteVariableSynchronizer variableSynchronizer;

RemoteVariableSynchronizer.Add(variables)

A seconda dell’overload, aggiunge una variabile o una lista di variabili all’oggetto di tipo RemoteVariableSynchronizer su cui si invoca.

void public void Add(IUAVariable variables);
void public void Add(RemoteVariable variables);
void public void Add(IEnumerable<IUAVariable> variables);
void public void Add(IEnumerable<RemoteVariable> variables);

Argomento

variables IUAVariable

Oggetto C# IUAVariable da aggiungere nell’oggetto su cui si invoca il metodo.

variables RemoteVariable

Oggetto C# RemoteVariable, che identifica una cella di un array monodimensionale o multidimensionale, da aggiungere nell’oggetto su cui si invoca il metodo.

variables IEnumerable<IUAVariable>

Lista di IUAVariable da aggiungere nell’oggetto su cui si invoca il metodo.

variables IEnumerable<RemoteVariable>

Lista di RemoteVariable da aggiungere nell’oggetto su cui si invoca il metodo.

Esempi

Di seguito un esempio in cui si aggiunge all’oggetto variableSynchronizer una variabile speed.

var speed = LogicObject.Owner.GetVariable("Speed");
var variableSynchronizer = new RemoteVariableSynchronizer();
variableSynchronizer.Add(speed);

Di seguito un esempio in cui si aggiunge all’oggetto variableSynchronizer la variabile di indice 10 all’interno dell’array arrayVariable.

var arrayVariable = LogicObject.Owner.GetVariable("ArrayVariable");
var variableSynchronizer = new RemoteVariableSynchronizer();
variableSynchronizer.Add(new RemoteVariable(arrayVariable, 10));

Di seguito un esempio in cui si aggiunge all’oggetto variableSynchronizer la variabile di indice 10,5 all’interno dell’array multidimensionale scalarVariable.

var scalarVariable = LogicObject.Owner.GetVariable("ScalarVariable");
var variableSynchronizer = new RemoteVariableSynchronizer();
variableSynchronizer.Add(new RemoteVariable(scalarVariable, new uint[] { 10,5 }));

RemoteVariableSynchronizer.Remove(variables)

A seconda dell’overload, rimuove una variabile o una lista di variabili all’oggetto di tipo RemoteVariableSynchronizer su cui si invoca.

void public void Remove(IUAVariable variables);
void public void Remove(RemoteVariable variables);
void public void Remove(IEnumerable<IUAVariable> variables);
void public void Remove(IEnumerable<RemoteVariable> variables);

Argomento

variables IUAVariable

Oggetto C# IUAVariable da rimuovere nell’oggetto su cui si invoca il metodo.

variables RemoteVariable

Oggetto C# RemoteVariable, che identifica una cella di un array monodimensionale o multidimensionale, da rimuovere nell’oggetto su cui si invoca il metodo.

variables IEnumerable<IUAVariable>

Lista di IUAVariable da rimuovere nell’oggetto su cui si invoca il metodo.

variables IEnumerable<RemoteVariable>

Lista di RemoteVariable da rimuovere nell’oggetto su cui si invoca il metodo.

Esempi

Di seguito un esempio in cui si rimuove dall’oggetto variableSynchronizer una variabile speed

variableSynchronizer.Remove(speed);

Di seguito un esempio in cui si rimuove dall’oggetto variableSynchronizer la variabile di indice 10 all’interno dell’array arrayVariable.

variableSynchronizer.Add(new RemoteVariable(arrayVariable, 10));

Di seguito un esempio in cui si rimuove dall’oggetto variableSynchronizer la variabile di indice 10,5 all’interno dell’array multidimensionale scalarVariable.

variableSynchronizer.Add(new RemoteVariable(scalarVariable, new uint[] { 10,5 }));

Vedi anche

Concetti correlati

Variabili di campo

API correlate

API per leggere/scrivere variabili di campo