So ganz verstehe ich den optimierten Code noch nicht...
Habe das erstmal so gelöst in dem ich die Variabeln und Schleifen gedoppelt habe..
PROGRAM Web
VAR
h0 : WORD;
h1 : WORD;
i : INT;
Merker0 AT %MW0 : WORD;
Merker1 AT %MW1 : WORD;
Ausgang0 AT %QW0 : WORD;
Ausgang1 AT %QW1 : WORD;
END_VAR
h0:=1;
FOR i:=0 TO 15 DO
IF (Merker0 AND h0) > 0 THEN
Ausgang0:=Ausgang0 XOR h0;
Merker0:=0;
END_IF
h0:=h0*2;
END_FOR
h1:=1;
FOR i:=0 TO 15 DO
IF (Merker1 AND h1) > 0 THEN
Ausgang1:=Ausgang1 XOR h1;
Merker1:=0;
END_IF
h1:=h1*2;
END_FOR
Trotzdem funktioniert nach Neuem Laden der HTML-Seite jeder Button genau 1x
Der Code in meinem 1. Post funktionierte einwandfrei, war aber viel zu "lang"... keine Ahnung weshalb das mit dem neuen Code nicht will....
EDIT:
Totalabgedreht, der neue Code funktioniert nur 1x je Taste wenn man die Steuerseite mit CHROME aufruft.
Habe nun Firefox genommen > Nun funktioniert es einwandfrei... jeder Taster auf der HTML-Seite funktioniert beliebig oft...
Sehr merkwürdig...
Witzig, dass der alte Code auch "CHROME-kompatibel" ist......
Hauptsache es geht nun mit meinem Android 4.03 Tablet und dem Standardbrowser einwandfrei......
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Freddy hat geschrieben:
Hallo Alex,
das Beispiel wurde leider nicht 1:1 umgesetzt.
Die Befehlszeile "Merker0:=0;" muss außerhalb der FOR-Schleife aufgerufen werden.
Ich kann mir nicht vorstellen, dass der verwendete Browser einen Einfluß auf die Funktion hat!?
Gruß
Freddy
Hatte ich zuerst so gemacht.. half auch nicht... dachte dann es wäre besser es in die Schleife zu bauen.
Kein Unterschied.
Wie gesagt es funktioniert so wie zuletzt geschrieben... aber eben nicht mit Chrome....
Einwandfrei mit Firefox und OPERA unter Win7 64Bit und unter dem Standardbrowser von Android 4.03 !
Habe auch noch keineAhnung woran das liegt... irgendwie wird die Schnittstelle per Chrome wohl nicht regelmäßig aktualisiert..
Ein Button setztl %MX1.3=TRUE das landet bei ersten mal in %MW1 und somit in %QW1
%MW1 wird dann auf 0 gesetzt und bekommt dann nichts mehr mit,
egal wie oft ich per Buton auf der Webseite wieder %MX1.3=TRUE setzte.
(Im alten Code wo %MX1.3=False gesetzt wurde lief es in Chrome problemlos...)
Schließe ich die URL jedoch ganz und rufe sie per Chrome erneut auf, funktioniert jeder %MX1.x Wert wieder genau 1x. Eine Refresh (F5) reicht jedoch NICHT aus !
Beim Firefox/OPERA muss ich dazu nichts schließen und neu aufrufen ! Es geht einfach so wie es soll..
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo,
wer kann mir helfen, diesen Code zu optimieren ?? VIELEN DANK !!
IF %MX0.0 THEN
IF %QX0.0 THEN
%QX0.0 := FALSE;
ELSE
%QX0.0 := TRUE;
END_IF
%MX0.0 := FALSE;
END_IF
IF %MX0.1 THEN
IF %QX0.1 THEN
%QX0.1 := FALSE;
ELSE
%QX0.1 := TRUE;
END_IF
%MX0.1 := FALSE;
END_IF
IF %MX0.2 THEN
IF %QX0.2 THEN
%QX0.2 := FALSE;
ELSE
%QX0.2 := TRUE;
END_IF
%MX0.2 := FALSE;
END_IF
IF %MX0.3 THEN
IF %QX0.3 THEN
%QX0.3 := FALSE;
ELSE
%QX0.3 := TRUE;
END_IF
%MX0.3 := FALSE;
END_IF
IF %MX0.4 THEN
IF %QX0.4 THEN
%QX0.4 := FALSE;
ELSE
%QX0.4 := TRUE;
END_IF
%MX0.4 := FALSE;
END_IF
.......
IF %MX0.15 THEN
IF %QX0.15 THEN
%QX0.15 := FALSE;
ELSE
%QX0.15 := TRUE;
END_IF
%MX0.15 := FALSE;
END_IF
Also immer die gleiche Abfrage für %MX0.0 bis %MX0.15
%MX0.value und value von 0 bis 15 hochzählen mag er wohl nicht....
Das ganze ist Teil eines Programms (PRG) welche Werte Abfragt die eine HTML Webseite setzen kann.
Das hier müsste also in brauchbare Syntax umgesetzt werden:
For value= 0 to 15
IF %MX0.value THEN
IF %QX0.value THEN
%QX0.value := FALSE;
ELSE
%QX0.value := TRUE;
END_IF
%MX0.value := FALSE;
END_IF
Next value
sorry.... sehr laienhaft....
Hallo Alex,
ich denke so sollte es funktionieren:
Gruß
Freddy
Vielen Dank.. werde ich gleich mal testen !
Hi ! Leider stimmt noch etwas nicht mit dem Code.
Ich kann zwar jeden "schalter" einmal schalten, danach jedoch nicht mehr.
Irgendwas wird da nicht zurückgesetzt....
Der Merker (%MW0) wird zwar auf 0 gesetzt aber nicht der Wert
z.B. wenn %MX0.3 der auf der HTML-Seite auf "TRUE" gesetzt wurde.
Wäre schön wenn jemand den Fehler findet !
Abgefragt werden soll auch nicht nur
MX0.0 bis MX0.15 sondern auch
MX1.0 bis MX1.15
So ganz verstehe ich den optimierten Code noch nicht...
Habe das erstmal so gelöst in dem ich die Variabeln und Schleifen gedoppelt habe..
PROGRAM Web
VAR
h0 : WORD;
h1 : WORD;
i : INT;
Merker0 AT %MW0 : WORD;
Merker1 AT %MW1 : WORD;
Ausgang0 AT %QW0 : WORD;
Ausgang1 AT %QW1 : WORD;
END_VAR
h0:=1;
FOR i:=0 TO 15 DO
IF (Merker0 AND h0) > 0 THEN
Ausgang0:=Ausgang0 XOR h0;
Merker0:=0;
END_IF
h0:=h0*2;
END_FOR
h1:=1;
FOR i:=0 TO 15 DO
IF (Merker1 AND h1) > 0 THEN
Ausgang1:=Ausgang1 XOR h1;
Merker1:=0;
END_IF
h1:=h1*2;
END_FOR
Trotzdem funktioniert nach Neuem Laden der HTML-Seite jeder Button genau 1x
Der Code in meinem 1. Post funktionierte einwandfrei, war aber viel zu "lang"... keine Ahnung weshalb das mit dem neuen Code nicht will....
EDIT:
Totalabgedreht, der neue Code funktioniert nur 1x je Taste wenn man die Steuerseite mit CHROME aufruft.
Habe nun Firefox genommen > Nun funktioniert es einwandfrei... jeder Taster auf der HTML-Seite funktioniert beliebig oft...
Sehr merkwürdig...
Witzig, dass der alte Code auch "CHROME-kompatibel" ist......
Hauptsache es geht nun mit meinem Android 4.03 Tablet und dem Standardbrowser einwandfrei......
Hallo Alex,
das Beispiel wurde leider nicht 1:1 umgesetzt.
Die Befehlszeile "Merker0:=0;" muss außerhalb der FOR-Schleife aufgerufen werden.
Ich kann mir nicht vorstellen, dass der verwendete Browser einen Einfluß auf die Funktion hat!?
Gruß
Freddy
Hatte ich zuerst so gemacht.. half auch nicht... dachte dann es wäre besser es in die Schleife zu bauen.
Kein Unterschied.
Wie gesagt es funktioniert so wie zuletzt geschrieben... aber eben nicht mit Chrome....
Einwandfrei mit Firefox und OPERA unter Win7 64Bit und unter dem Standardbrowser von Android 4.03 !
Habe auch noch keineAhnung woran das liegt... irgendwie wird die Schnittstelle per Chrome wohl nicht regelmäßig aktualisiert..
Ein Button setztl %MX1.3=TRUE das landet bei ersten mal in %MW1 und somit in %QW1
%MW1 wird dann auf 0 gesetzt und bekommt dann nichts mehr mit,
egal wie oft ich per Buton auf der Webseite wieder %MX1.3=TRUE setzte.
(Im alten Code wo %MX1.3=False gesetzt wurde lief es in Chrome problemlos...)
Schließe ich die URL jedoch ganz und rufe sie per Chrome erneut auf, funktioniert jeder %MX1.x Wert wieder genau 1x. Eine Refresh (F5) reicht jedoch NICHT aus !
Beim Firefox/OPERA muss ich dazu nichts schließen und neu aufrufen ! Es geht einfach so wie es soll..
viel zu kompliziert:
geht natürlich auch mit 32-Bit anstatt 16 Bit
Hmmm... so einfach ginge das ?....
Werde das gleich mal testen.... vielen Dank !