RemoteVariableSynchronizer() constructor
Cree un objeto
RemoteVariableSynchronizer
que pueda contener una lista de variables de proyecto que se conservarán sincronizadas con las variables de campo relacionadas.public RemoteVariableSynchronizer()
IMPORTANTE:
El objeto
RemoteVariableSynchronizer
se debe declarar como miembro de clase dentro de NetLogic.Constructor con tiempo de sondeo predeterminado
En el siguiente ejemplo, se crea un objeto
variableSynchronizer
para mantener el valor de una variable de proyecto Speed
sincronizada con el valor de una variable de campo que identifica la velocidad de un motor. La variable de proyecto, representada por el objeto motorSpeed
, se agrega al objeto variableSynchronizer
a través del método Add()
.Cuando la variable de campo cambia su valor, se ejecuta el método
motorSpeed_VariableChange
. Si el valor de motorSpeed
(de la variable de campo) es superior a 200, se genera un mensaje de advertencia. El tiempo de sondeo predeterminado está establecido a la velocidad máxima.private void Start() { motorSpeed = LogicObject.Owner.GetVariable("Speed");variableSynchronizer = new RemoteVariableSynchronizer();variableSynchronizer.Add(motorSpeed); motorSpeed.VariableChange += MotorSpeed_VariableChange; } private void MotorSpeed_VariableChange(object sender, VariableChangeEventArgs e) { if (motorSpeed.Value > 200) { Log.Warning("Speed limit reached!"); } } private IUAVariable motorSpeed; private RemoteVariableSynchronizer variableSynchronizer;
En el método
Stop()
, la terminación de la sincronización cuando se quita el nodo primario de NetLogic se aplica invocando al método Dispose()
.Constructor con tiempo de sondeo personalizado
En el siguiente ejemplo, el tiempo de sondeo para
RemoteVariableSynchronizer
está establecido en 5000
milisegundos.public override void Start() { var variable1 = Project.Current.Get<IUAVariable>("Model/Variable1"); variable1.VariableChange += Variable1_VariableChange;synchronizer = new RemoteVariableSynchronizer(TimeSpan.FromMilliseconds(5000));synchronizer.Add(variable1); } private void Variable1_VariableChange(object sender, VariableChangeEventArgs e) { Log.Info($"Variable1 {e.NewValue}"); } public override void Stop() { synchronizer.Dispose(); var variable1 = Project.Current.Get<IUAVariable>("Model/Variable1"); variable1.VariableChange -= Variable1_VariableChange; } RemoteVariableSynchronizer synchronizer;
Entregue su opinión