Skip to content
Snippets Groups Projects
Commit d8f672ac authored by PICHON's avatar PICHON
Browse files

Correction of auto-input activation, percent evaluation and documentation update.

parent ab398b9b
Branches
Tags
No related merge requests found
...@@ -117,17 +117,21 @@ Chaque ligne paramètre un attribut en précisant : ...@@ -117,17 +117,21 @@ Chaque ligne paramètre un attribut en précisant :
* Son nom, * Son nom,
* Son activation au démarrage du TangoParser * Son activation au démarrage du TangoParser
* Sa fréquence d’actualisation, * Sa fréquence d’actualisation,
* La précision, elle est optionnelle et ignorée dans le cas des types non numériques (booléen, chaines de caractères). Dans le cas des vecteurs, elle s’applique à chaque élément. * La précision, elle est optionnelle et ignorée dans le cas des types non numériques (booléen, chaines de caractères). Dans le cas des vecteurs, elle s’applique à chaque élément. Si le symbole "%" en présent à la fin, alors l'écart sera évaluer en pourcentage.
Pour chaque attribut IOName présent dans la liste des valeurs de AutoInputProperties, un attribut booléen en Read/Write est créé pour permettre son activation ou désactivation. Il n’est visible qu’en mode expert. Pour chaque attribut IOName présent dans la liste des valeurs de AutoInputProperties, un attribut booléen en Read/Write est créé pour permettre son activation ou désactivation. Il n’est visible qu’en mode expert.
### Exemple ### Exemple
valIO;false;0.5;0.01 valIO;true;0.5;0.01
valIO2;true;1 valIO2;false;1
valIO3;false;1;1%;last_read
valIO4;false;1;
La valeur présente dans la partie « output » de valIO, sera vérifiée toutes les 0,5 secondes et, si elle change de plus de 0,01 en valeur absolue, elle est écrite dans la partie « input ». Dès le démarrage du TangoParser, le processus de recopie est activé et une première recopie à lieu. * valIO : La valeur présente dans la partie « output » sera vérifiée toutes les 0,5 secondes et, si elle change de plus de 0,01 en valeur absolue, elle est écrite dans la partie « input ». Dès le démarrage du TangoParser, le processus de recopie est activé et une première recopie à lieu.
:warning:Attention, ce mécanisme est dangereux.:warning: :warning:Attention, ce mécanisme est dangereux.:warning:
Pour valIO2, la recopie devra être activée via l’attribut booléen « valIO2AutoInputActivation ». Il sera vérifié toutes les secondes et recopié en cas de changement strict. * valIO2 : La recopie devra être activée via l’attribut booléen « valIO2AutoInputActivation ». Il sera vérifié toutes les secondes et recopié en cas de changement strict.
* valIO3 : La recopie devra être activée via l’attribut booléen « valIO2AutoInputActivation ». Il sera vérifié toutes les secondes et recopié en cas de changement de plus de 1% par rapport à la dernière valeur *lue*.
* valIO4 : La recopie devra être activée via l’attribut booléen « valIO2AutoInputActivation ». Il sera vérifié toutes les secondes et recopié en cas de changement strict.
### Exemple d'usage ### Exemple d'usage
Dans l'exemple ci-dessous, une device Publisher accessible par test/tools/test.pub contient 3 attributs booléen : valX, valZ, valGo et fofbPrev. Dans l'exemple ci-dessous, une device Publisher accessible par test/tools/test.pub contient 3 attributs booléen : valX, valZ, valGo et fofbPrev.
......
...@@ -22,7 +22,6 @@ public class AutoInputActivatorAttribute implements IAttributeBehavior { ...@@ -22,7 +22,6 @@ public class AutoInputActivatorAttribute implements IAttributeBehavior {
config.setTangoType(TangoConst.Tango_DEV_BOOLEAN, AttrDataFormat.SCALAR); config.setTangoType(TangoConst.Tango_DEV_BOOLEAN, AttrDataFormat.SCALAR);
config.setWritable(AttrWriteType.READ_WRITE); config.setWritable(AttrWriteType.READ_WRITE);
config.setDispLevel(DispLevel.OPERATOR); config.setDispLevel(DispLevel.OPERATOR);
//value.setValue(TypeConversionUtil.castToType(config.getType(), activated));
this.autoInputAttributeManager = autoInputAttributeManager; this.autoInputAttributeManager = autoInputAttributeManager;
} }
...@@ -34,15 +33,11 @@ public class AutoInputActivatorAttribute implements IAttributeBehavior { ...@@ -34,15 +33,11 @@ public class AutoInputActivatorAttribute implements IAttributeBehavior {
@Override @Override
public AttributeValue getValue() throws DevFailed { public AttributeValue getValue() throws DevFailed {
this.value.setValue(autoInputAttributeManager.isRunning()); this.value.setValue(autoInputAttributeManager.isRunning());
//return autoInputAttributeManager.isRunning();
return value; return value;
} }
public boolean getBooleanValue() { public boolean getBooleanValue() {
if (value.getValue() != null && value.getValue() instanceof Boolean) { return autoInputAttributeManager.isRunning();
return ((Boolean) value.getValue()).booleanValue();
}
return false;
} }
@Override @Override
...@@ -57,7 +52,6 @@ public class AutoInputActivatorAttribute implements IAttributeBehavior { ...@@ -57,7 +52,6 @@ public class AutoInputActivatorAttribute implements IAttributeBehavior {
} else { } else {
autoInputAttributeManager.stop(); autoInputAttributeManager.stop();
} }
//this.value.setValue(newValue);
} }
} }
......
package fr.soleil.tango.parser.autoinput; package fr.soleil.tango.parser.autoinput;
import java.lang.reflect.Array; import java.lang.reflect.Array;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -94,7 +93,7 @@ public class AutoInputAttributeManager { ...@@ -94,7 +93,7 @@ public class AutoInputAttributeManager {
double prevValDbl = ((Number) prevValue).doubleValue(); double prevValDbl = ((Number) prevValue).doubleValue();
double diff = newValDbl - prevValDbl; double diff = newValDbl - prevValDbl;
if (properties.isPercentPrecision()) { if (properties.isPercentPrecision()) {
double pctDiff = Math.abs(diff / prevValDbl); double pctDiff = Math.abs(diff / prevValDbl)*100.0d;
equal = pctDiff < properties.getPrecision(); equal = pctDiff < properties.getPrecision();
} else { } else {
double absDiff = Math.abs(diff); double absDiff = Math.abs(diff);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment