Zähler mit 2 Eingängen

Hallo Forum
Ich habe folgendes Problem und hoffe ihr könnt mir da weiter helfen.

Ich habe 2 Eingänge. Nennen wir sie mal E1 und E2. Diese beiden sollen einen Zähler steuern. und zwar wie folgt:
Wenn E1 =1 und E2 =0 Zähler um 1 erhöhen
Wenn E1 =0 und E2 =1 Zähler um 1 erhöhen
Wenn E1 =1 und E2 =1 Zähler um 1 Erhöhen (Hier darf dann der Zähler nicht um 2 erhöht werden)

Hat einer von euch eine Idee?
Ich hab irgendwie bisher keine Lösung gefunden.
Gruß
Carsten

eigentlich hast du das Problem schon selber gelöst:
ungetestet sollte es so aussehen


$zähler = getvalue(11111);
$e1		= getvalue(12346);
$e2		= getvalue(12347);
$vari	= 11111;
if($e1==1 and $e2==0) 
{
$zähler1 = $zähler+1;
setvalue($vari,$zähler1);


if($e1==0 and $e2==1) 
{
$zähler2 = $zähler+1;
setvalue($vari,$zähler2);

if($e1==1 and $e2==1) 
{
$zähler3 = $zähler+1;
setvalue($vari,$zähler3);
}
}
}

Hier gibt es lediglich ein kleines Problem. Wenn du beide Variablen durch Ereignisse beobachtest und auf den Wert 1 reagierst, dann würde der Zähler um 2 erhöht werden, wenn beide Variablen gleichzeitig auf 1 gesetzt werden, da beide Ereignisse ausgelöst werden.

Dies kannst du beispielsweise umgehen, indem du prüfst ob seit dem letzten Aufruf des Skriptes eine gewisse Zeit vergangen ist. War die letzte Ausführung zum gleichen Zeitpunkt oder kurz versetzt, dann kannst du die Ausführung direkt abbrechen, da dann wohl eine gleichzeitige Änderung stattfand.

Geht noch etwas einfacher.
Ja zwei Ereignisse, bei Wert 1 (oder True, je nach Variablentyp) ausführen.
Dazu jeweils ein Script, welches zuerst prüft ob die andere Variable auch 1 (oder true) ist und dann abbricht.
Sonst den Zähler erhöhen.
Sollte also E1 auf 1 gehen, und E2 auch, bevor E1 wieder auf 0 ist, passiert nix.
Michael

Wie wäre es zu prüfen, ob E1 oder E2 „1“ ist und dann zu erhöhen?

Ich glaube eine Prüfung ob die andere Variable auf 0 ist würde nicht dem von Carsten anvisiertem Verhalten entsprechen. Sind initial beide Variablen auf 0 und werden dann nacheinander auf 1 gesetzt, dann soll der Zähler zweimal erhöht werden. Werden allerdings beide Variablen gleichzeitig auf 1 gesetzt, so soll der Zähler nur um 1 erhöht werden. So zumindest meine Interpretation.

Prüfen ob E1 oder E2 auf 1 steht ist mit dem aktuellen Aufbau der Events leider nicht direkt möglich.

Niels, spricht du von exclusive-oder ?
Oder alleine bedeutet doch nicht entweder oder.

„oder“ lieg ich falsch?

Mein Beispiel:

<?
 $zähler = 0 ;
$e1     = 0;
$e2     = 1;

if($e1==1 || $e2==1)
 {
$zähler = $zähler+1;
echo "Zähler erhöht 
";
}  

echo $zähler ;
?>

Das Skript würde so funktionieren. Die Frage ist, wann und wie du es auslöst. Reagierst du mit Ereignissen auf Änderungen in E1 und E2, dann wird das Skript doppelt ausgeführt, wenn sich beide Variablen gleichzeitig ändern. Und das soll explizit nicht passieren.