Registrieren    Anmelden    Forum    Suche    FAQ

Foren-Übersicht » Alarm Modem Projektierung » Webserver




Ein neues Thema erstellen Auf das Thema antworten  [ 21 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags:
 Beitrag Verfasst: Mi Sep 02, 2009 1:19 pm 
Tixi-Support-Team

Registriert: Mo Jul 11, 2005 5:50 pm
Beiträge: 1351
Wohnort: Berlin
HIT_PJ hat geschrieben:
Tixi-Support hat geschrieben:
Ein weiterer Vorteil der Lösung: Der Anwender bekommt vom Refresh nichts mit, da in der Statuszeile kein Ladevorgang angezeigt wird.


Ob das immer ein Vorteil ist?
Ich habe schon Signale einbauen müssen, damit der Nutzer erkennt wann der Wert aktualisiert wurde bzw. das "Alter" des Wertes sollte gezeigt werden.

Dazu nutzen wir i.d.R. eine Referenz auf die Uhrzeit des Tixi. Solange sich diese regelmäßig ändert, funktioniert auch das Refresh. Zudem hat er dann auch eine genaue zeitliche Zuordnung, von wann diese Daten sind.

HIT_PJ hat geschrieben:
Zu Ajax:
Sicher für Profis das Mittel, Seiten ohne komplettes Neuladen zu aktualisieren. Der Preis ist aber ein höherer Aufwand bei der
Erstellung (das obige Beispiel deutet das schon an) und der Test sollte mit allen gängigen Browsern erfolgen.

Getestet ist diese Lösung auf IE und FF, sowie auf einigen Touchpads/Palms mit Opera. Bzgl. AJAX mache ich mir da eher weniger Gedanken bzgl. der Kompatibilität, da ja mittlerweile fast alle Webseiten damit arbeiten.

Ich finde den Aufwand nicht wirklich größer, denn Sie müssen in dem Beispiel nur an zwei Stellen Code anpassen:
- Im HTML an der gewünschten Position die div-Container erzeugen
- Für jede Variable eine xmlhttp.responseXML Zuordnung angeben.
Der Rest des Codes kann 1:1 übernommen werden.

Ich denke beide Varianten haben definitiv eine Daseinsberechtigung. Ist halt Geschmackssache....

Als "Profi" kann man das Ganze dann noch wunderbar mit XML-Transformationen verknüpfen, und die komplette Webseite dynamisch aus dem System-Property-Zweig erstellen lassen. Funktioniert prima, und wird so wohl auch in die Zukünftige TILA-WEB einfließen :wink:

_________________
Tixi Support Team

E-Mail-Support, Mo-Fr, 9:00 - 17:00: Tixi-Support@tixi.com
techn. Hotline, Mo-Fr, 9:00 - 12:00 und 13:00 - 17:00: 0900-100 90 11 für 2€/min


Nach oben 
   
Mit Zitat antworten  
 Betreff des Beitrags:
 Beitrag Verfasst: Mi Sep 02, 2009 12:51 pm 
Erfahrener

Registriert: Mo Jul 25, 2005 11:18 am
Beiträge: 25
Wohnort: Berlin
Tixi-Support hat geschrieben:
Ein weiterer Vorteil der Lösung: Der Anwender bekommt vom Refresh nichts mit, da in der Statuszeile kein Ladevorgang angezeigt wird.


Ob das immer ein Vorteil ist?
Ich habe schon Signale einbauen müssen, damit der Nutzer erkennt wann der Wert aktualisiert wurde bzw. das "Alter" des Wertes sollte gezeigt werden.

Zum Caching:
Eigenartigerweise hab ich bei dynamisch erzeugten Javascript mit dem Caching bisher noch keine Probleme gehabt, sonst ist mein Eindruck machen die Browser mit dem Caching was sie wollen.

Zu Ajax:
Sicher für Profis das Mittel, Seiten ohne komplettes Neuladen zu aktualisieren. Der Preis ist aber ein höherer Aufwand bei der
Erstellung (das obige Beispiel deutet das schon an) und der Test sollte mit allen gängigen Browsern erfolgen.


Nach oben 
   
Mit Zitat antworten  
 Betreff des Beitrags:
 Beitrag Verfasst: Mi Sep 02, 2009 10:22 am 
Tixi-Support-Team

Registriert: Mo Jul 11, 2005 5:50 pm
Beiträge: 1351
Wohnort: Berlin
In den vergangenen Monaten haben sich noch einige andere Möglichkeiten gezeigt, die mehr in Richtung AJAX gehen, und das Erzeugen von iframes und mehreren html-Dateien überflüssig machen, da sie direkt über xmlhttp auf den System-Properties-Zweig zugreifen.
Ein weiterer Vorteil der Lösung: Der Anwender bekommt vom Refresh nichts mit, da in der Statuszeile kein Ladevorgang angezeigt wird.

Hier ein kurzes Beispiel, das die Variablen
/Process/Bus1/Device_0/DeviceState und
/Process/Bus1/Device_0/Variable_0
in einem div-Container aktualisiert:

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>xmlhttp Demo</title>
<script type="text/javascript">

//xmlhttp initialisierung
var xmlhttp
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
  try {
  xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp=false;
  }
 }
@else
 xmlhttp=false
 @end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
   try {
      xmlhttp = new XMLHttpRequest();
   } catch (e) {
      xmlhttp=false;
   }
}
if (!xmlhttp && window.createRequest) {
   try {
      xmlhttp = window.createRequest();
   } catch (e) {
      xmlhttp=false;
   }
}

//Abruf des System-Properties-Process Zweiges (I/Os und SPS) im 5s Intervall und Zuweisung zu DIV-Container
function refresh() {
  if (xmlhttp) {
   url="/System/Properties/Process/"
   xmlhttp.open("GET",url,true);
   xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4) {
     document.getElementById('DS').innerHTML= 'DeviceState ' + xmlhttp.responseXML.getElementsByTagName('Bus1')[0].getElementsByTagName('Device_0')[0].getElementsByTagName('DeviceState')[0].attributes[0].nodeValue;
     document.getElementById('V0').innerHTML= 'Counter ' +  xmlhttp.responseXML.getElementsByTagName('Bus1')[0].getElementsByTagName('Device_0')[0].getElementsByTagName('Variable_0')[0].attributes[0].nodeValue;
     setTimeout('refresh()',5000)
    }
   }
  }
 xmlhttp.send(null)
   }
</script>
</head>

<!--Webseite mit DIV-Containern-->
<body onload="refresh()">
 <div id="DS"></div>
 <div id="V0"></div>
</body>
</html>
 


Quelle: http://www.jibbering.com/2002/4/httprequest.html

_________________
Tixi Support Team

E-Mail-Support, Mo-Fr, 9:00 - 17:00: Tixi-Support@tixi.com
techn. Hotline, Mo-Fr, 9:00 - 12:00 und 13:00 - 17:00: 0900-100 90 11 für 2€/min


Nach oben 
   
Mit Zitat antworten  
 Betreff des Beitrags:
 Beitrag Verfasst: Mi Sep 02, 2009 9:54 am 
Tixi-Support-Team

Registriert: Mo Jul 11, 2005 5:50 pm
Beiträge: 1351
Wohnort: Berlin
Zitat:
Danke für die Ergänzung. Haben Sie mal ausprobiert, wie sich das mit dem Caching verträgt? Wird das Skript immer wieder neu geladen, d.h. die Referenzen neu aufgelöst?


Ich hab den Anfang des Posting nicht mehr im Kopf gehabt. Natürlich refreshen Sie die Datei wie gehabt über den iframe, dann hat sich meine Anmerkung natürlich erledigt :wink:

Das mit den FileTypes dürfte aber trotzdem für einige interessant sein (geht aber nur in FW 3.x)...

_________________
Tixi Support Team

E-Mail-Support, Mo-Fr, 9:00 - 17:00: Tixi-Support@tixi.com
techn. Hotline, Mo-Fr, 9:00 - 12:00 und 13:00 - 17:00: 0900-100 90 11 für 2€/min


Nach oben 
   
Mit Zitat antworten  
 Beitrag Verfasst: Mi Sep 02, 2009 9:51 am 
Tixi-Support-Team

Registriert: Mo Jul 11, 2005 5:50 pm
Beiträge: 1351
Wohnort: Berlin
HIT_PJ hat geschrieben:
Der Informationsaustausch kann auch per Javascript-Variablen anstelle von innerHTML realisiert werden,
da javascript im Tixi auch geparst wird wenn sich der script in einer html-Datei befindet.

Danke für die Ergänzung. Haben Sie mal ausprobiert, wie sich das mit dem Caching verträgt? Wird das Skript immer wieder neu geladen, d.h. die Referenzen neu aufgelöst?

Statt das Skript ein eine hmtl-Datei zu packen, kann man es natürlich auch wie üblich in eine .js Datei auslagen. Somit könnte man auch für diesen Dateityp explizit das Caching in der WebServer Datenbank deaktivieren (und nebenbei auch noch andere MIME-Typen hinzufügen, siehe http://de.selfhtml.org/diverses/mimetypen.htm):

Code:
[<SetConfig _="ISP" ver="y">
<WebServer>
<FileTypes>
 <FileType desc="js" File="*.js" MIME="text/javascript" Processing="resolve"/>
</FileTypes>

<ActiveSite _="Site1"/>
 <Port _="80"/>
<Site1>
 <Archive1 _="WebSrc.bin"/>
</Site1>

</WebServer>
</SetConfig>]


Mögliche Angaben beim Processing:
cache: File darf gecacht werden
resolve: Variablenauflösung aktiviert (&#xae;)
parse: Erlaubt SSI zzgl. "resolve"

Folgende Filetypen sind vordefiniert (können aber überschrieben werden):
*.jpg" "image/jpeg" cache
*.jpeg" "image/jpeg" cache
*.gif" "image/gif" cache
*.png" "image/png" cache
*.txt" "text/plain" nichts
*.req" "text/plain" nichts
*.htm" "text/html" resolve
*.html" "text/html" resolve
*.xml" "text/xml" xml

_________________
Tixi Support Team

E-Mail-Support, Mo-Fr, 9:00 - 17:00: Tixi-Support@tixi.com
techn. Hotline, Mo-Fr, 9:00 - 12:00 und 13:00 - 17:00: 0900-100 90 11 für 2€/min


Nach oben 
   
Mit Zitat antworten  
 Beitrag Verfasst: Mi Sep 02, 2009 9:04 am 
Erfahrener

Registriert: Mo Jul 25, 2005 11:18 am
Beiträge: 25
Wohnort: Berlin
Der Informationsaustausch kann auch per Javascript-Variablen anstelle von innerHTML realisiert werden,
da javascript im Tixi auch geparst wird wenn sich der script in einer html-Datei befindet.
Der Zugriff wird kürzer und verständlicher.
Die neue Seite mfmvar.html:

Code:
<html>
<head>
<title>mfmvar</title>
<script type="text/javascript">
<!--
var v1="&#xae;/TIMES/TIME;";
//weitere Zuweisungen...
//-->
</script>
</head>
<body>
</body>
</html>


Der Zugriff vereinfacht sich wie folgt:

Code:
element = frames['result'].v1;


Die im ersten Beitrag verwendete Kurzform funktioniert auch bei neueren FF-Versionen,
die vom Tixi-Support vorgeschlagene Variante mit getElementById gilt jedoch als sicherer.


Nach oben 
   
Mit Zitat antworten  
 Beitrag Verfasst: Fr Aug 22, 2008 2:15 pm 
Tixi-Support-Team

Registriert: Mo Jul 11, 2005 5:50 pm
Beiträge: 1351
Wohnort: Berlin
HIT_PJ hat geschrieben:
function varshow()
{
dyn1.innerHTML = result.dyn1.innerHTML;
//weitere Zuweisungen...
}

Diese Zuweisung funktioniert nur im Internet Explorer (ab Version 6).
Besser wäre diese Zuweisung, die z.B. auch im FireFox funktioniert:

Code:
function varshow()
{
document.getElementById("dyn1").innerHTML = frames['result'].document.getElementById("dyn1").innerHTML;
//weitere Zuweisungen...
}


Wenn man einen ganzen Haufen Variablen hat, wäre ggf. auch eine Schleife angebracht, z.B. für 10 Variablen:
Code:
function varshow()
{
  for (var i = 1; i <= 10; i++) {
    document.getElementById("dyn" + i).innerHTML =
      frames['result'].document.getElementById("dyn" + i).innerHTML;
  }
}

_________________
Tixi Support Team

E-Mail-Support, Mo-Fr, 9:00 - 17:00: Tixi-Support@tixi.com
techn. Hotline, Mo-Fr, 9:00 - 12:00 und 13:00 - 17:00: 0900-100 90 11 für 2€/min


Nach oben 
   
Mit Zitat antworten  
 Betreff des Beitrags:
 Beitrag Verfasst: Mo Dez 03, 2007 3:04 pm 
Tixi-Support-Team

Registriert: Mo Jul 11, 2005 5:50 pm
Beiträge: 1351
Wohnort: Berlin
RoeTeam hat geschrieben:
Hallo,
irgendwie klappt das alles nicht so wie ich das gerne hätte...
Nach der ersten Aktualisierung ist die LED weg, und es steht nur noch 1 oder 0 da, jenachdem wie der aktuelle Status ist. :cry:

In Ihrem Code fehlt der iframe "result", auf das sich Ihr JavaScript verweist !

RoeTeam hat geschrieben:
Gibt es eine Möglichkeit evtl. aktuelle Grafiken nachladen zu lassen (beim wechsel)?

Funktioniert genause wie mit der LED, Sie können damit ja ganze span/div Container inkl. Grafiken, StyleSheets usw. austauschen.

Hier mal Auszüge aus dem Beispiel mit der LED, wie es bei unseren Demoprojekten eingesetzt wird:

JavaScripts:
function LED (Stat) {
var s=(Stat) ? "#00FF00" : "#C0C0C0";
document.write('<span style="font-family:Marlett;border:solid #000000 1px; color:' + s + '">n</span>');
}
var aktiv = window.setInterval("values.location.reload(true)", 10000);
function dyn_var()
{
v1.innerHTML = values.v1.innerHTML;
}

index.html:
<iframe width="0" height="0" name="values" src="values.html" onload="dyn_var()"></iframe>
<span id="v1"><script language="JavaScript">LED(&#xae;/Process/Bus1/Device_0/Variable_0;);</script></span>

values.html:
<span id="v1"><script language="JavaScript">LED(&#xae;/Process/Bus1/Device_0/Variable_0;);</script></span>


Ich hoffe Sie kommen damit weiter...

_________________
Tixi Support Team

E-Mail-Support, Mo-Fr, 9:00 - 17:00: Tixi-Support@tixi.com
techn. Hotline, Mo-Fr, 9:00 - 12:00 und 13:00 - 17:00: 0900-100 90 11 für 2€/min


Nach oben 
   
Mit Zitat antworten  
 Betreff des Beitrags:
 Beitrag Verfasst: Mo Nov 26, 2007 1:51 pm 
Erfahrener

Registriert: Mo Aug 15, 2005 8:53 am
Beiträge: 38
Hallo,

irgendwie klappt das alles nicht so wie ich das gerne hätte...

Folgende Zeilen habe ich eingetippt...

<html>

<head>

<script language="JavaScript">
<!--

var aktiv = window.setInterval("result.location.reload(true)", 10000);
function varshow()
{
dyn12.innerHTML = result.dyn12.innerHTML;
}

function LED (Stat,Msk)
{
var s=(Stat & Msk) ? "#00FF00" : "#FF0000";
document.write('<span style="font-family:Marlett;border:solid #A0A0A0 1px; color:' + s + '">n</span>');
}


//-->
</script></head>

<body>
<p align="center">
<span id="dyn12"> <script language="JavaScript"> LED("&#xae;/V20;",1);</script></span>
</p>

</body>
</html>

Nach der ersten Aktualisierung ist die LED weg, und es steht nur noch 1 oder 0 da, jenachdem wie der aktuelle Status ist. :cry:

Der Vorschlag mit dem Grafikwechsel klappt auch nur wenn die Webseite lokal abgespeichert wird, wie ist es denn wenn ich diese immer komplett laden muss?
Gibt es eine Möglichkeit evtl. aktuelle Grafiken nachladen zu lassen (beim wechsel)?

Vielen Dank im voraus..


Nach oben 
   
Mit Zitat antworten  
 Betreff des Beitrags:
 Beitrag Verfasst: Do Nov 22, 2007 10:12 am 
Tixi-Support-Team

Registriert: Mo Jul 11, 2005 5:50 pm
Beiträge: 1351
Wohnort: Berlin
RoeTeam hat geschrieben:
Gibt es eigentlich auch eine Möglichkeit geladene gif's entsprechend der aktuellen Daten zu wechseln?
Aus 1Pumpe.gif wird 0Pumpe.gif ?

Sie meinen mit der oben angegebenen dynamischen Variante ?
Klar, das geht. Tragen Sie einfach die zu aktualiserenden Grafiken, Links usw. in den <span>-Abschnitt mit ein.

z.B.
LED-Anzeige (Script siehe hier):
<span id="v1"><script language="JavaScript">LED(&#xae;/Process/MB/PollButton,;);</script></span>

Grafik-Anzeige (0.gif, 1.gif, siehe webtemplates.zip):
<span id="v2"><<img src="&#xae;/Process/MB/IO/I/P0;.gif"></span>

usw.

_________________
Tixi Support Team

E-Mail-Support, Mo-Fr, 9:00 - 17:00: Tixi-Support@tixi.com
techn. Hotline, Mo-Fr, 9:00 - 12:00 und 13:00 - 17:00: 0900-100 90 11 für 2€/min


Nach oben 
   
Mit Zitat antworten  
 Betreff des Beitrags:
 Beitrag Verfasst: Do Nov 22, 2007 10:05 am 
Erfahrener

Registriert: Mo Aug 15, 2005 8:53 am
Beiträge: 38
Gibt es eigentlich auch eine Möglichkeit geladene gif's entsprechend der aktuellen Daten zu wechseln?
Aus 1Pumpe.gif wird 0Pumpe.gif ?


Nach oben 
   
Mit Zitat antworten  
 Betreff des Beitrags:
 Beitrag Verfasst: Do Nov 22, 2007 9:06 am 
Tixi-Support-Team

Registriert: Mo Jul 11, 2005 5:50 pm
Beiträge: 1351
Wohnort: Berlin
RoeTeam hat geschrieben:
Ich habe das Problem gelöst. Mit Web-Aliases Funktioniert es nicht!
Nur Direktverweisung funktioniert!

Das kann so eigentlich nicht stimmen, denn wenn die Aliase in der Webseite funktionieren, müssen sie auch in Ihrer varvisio.html funktionieren ! Für das Modem ist das kein Unterschied....

Unsere Live-Demo nutzt z.B. auch Aliase mit dynamischer Aktualisierung:

<html>
<body>
<span class="style4" id="dyn1">&#xae;Counter1;</span>
<span class="style4" id="dyn2">&#xae;Merker3;</span>
<span class="style4" id="dyn3">&#xae;Merker4;</span>
<span class="style4" id="dyn4">&#xae;Merker5;</span>
<span class="style4" id="dyn5">&#xae;Merker6;</span>
</body>
</html>

_________________
Tixi Support Team

E-Mail-Support, Mo-Fr, 9:00 - 17:00: Tixi-Support@tixi.com
techn. Hotline, Mo-Fr, 9:00 - 12:00 und 13:00 - 17:00: 0900-100 90 11 für 2€/min


Nach oben 
   
Mit Zitat antworten  
 Betreff des Beitrags:
 Beitrag Verfasst: Do Nov 22, 2007 8:25 am 
Erfahrener

Registriert: Mo Aug 15, 2005 8:53 am
Beiträge: 38
Ich habe das Problem gelöst. Mit Web-Aliases Funktioniert es nicht!
Nur Direktverweisung funktioniert!


Nach oben 
   
Mit Zitat antworten  
 Betreff des Beitrags:
 Beitrag Verfasst: Mi Nov 21, 2007 2:34 pm 
Tixi-Support-Team

Registriert: Mo Jul 11, 2005 5:50 pm
Beiträge: 1351
Wohnort: Berlin
RoeTeam hat geschrieben:
<span id="dyn1">&#xae;/®V9; </span>

Hier dürfte eigentlich keiner der Werte funktionieren, da die Entitäten falsch geschrieben sind.
Korrekt wäre:
<span id="dyn1">&#xae;V9; </span>

V9 muss dabei als Web-Alias definiert sein....

_________________
Tixi Support Team

E-Mail-Support, Mo-Fr, 9:00 - 17:00: Tixi-Support@tixi.com
techn. Hotline, Mo-Fr, 9:00 - 12:00 und 13:00 - 17:00: 0900-100 90 11 für 2€/min


Nach oben 
   
Mit Zitat antworten  
 Betreff des Beitrags:
 Beitrag Verfasst: Mi Nov 21, 2007 2:31 pm 
Tixi-Support-Team

Registriert: Mo Jul 11, 2005 5:50 pm
Beiträge: 1351
Wohnort: Berlin
{undef} gibt das Alarm Modem immer dann aus, wenn eine Variablenreferenz nicht aufgelöst werden kann. Sie müssen also die Referenzen (Pfad) prüfen.

Was bekommen Sie denn als Antwort, wenn Sie auf den Pfad ein TiXML-Get machen ?

_________________
Tixi Support Team

E-Mail-Support, Mo-Fr, 9:00 - 17:00: Tixi-Support@tixi.com
techn. Hotline, Mo-Fr, 9:00 - 12:00 und 13:00 - 17:00: 0900-100 90 11 für 2€/min


Nach oben 
   
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
 
Ein neues Thema erstellen Auf das Thema antworten  [ 21 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Foren-Übersicht » Alarm Modem Projektierung » Webserver


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste

 
 

 
Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Deutsche Übersetzung durch phpBB.de