Constructeur RemoteVariableSynchronizer()
Créez un objet
RemoteVariableSynchronizer
pouvant contenir une liste de variables de projet à synchroniser avec les variables de champ associées.public RemoteVariableSynchronizer()
IMPORTANT:
L’objet
RemoteVariableSynchronizer
doit être déclaré comme membre de classe dans le NetLogic.Constructeur avec la durée d’interrogation par défaut
Dans l’exemple suivant, un objet
variableSynchronizer
est créé pour conserver la valeur d’une variable de projet Speed
synchronisée avec la valeur d’une variable de champ qui identifie la vitesse d’un moteur. La variable de projet, représentée par l’objet motorSpeed
, est ajoutée à l’objet variableSynchronizer
via la méthode Add()
.Lorsque la valeur de la variable de champ est modifiée, la méthode
motorSpeed_VariableChange
est exécutée. Lorsque la valeur motorSpeed
(de la variable de champ) est supérieure à 200, un message d’avertissement est généré. La durée d’interrogation par défaut est définie sur la valeur maximale.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;
Dans la méthode
Stop()
, la fin de la synchronisation lorsque le nœud parent du NetLogic est supprimé s’effectue en invoquant la méthode Dispose()
.Constructeur avec une durée d’interrogation personnalisée
Dans l’exemple suivant, la durée d’interrogation de
RemoteVariableSynchronizer
est définie sur 5000
millisecondes.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;
Fournir une réponse