• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Mehrere Datenwerte von SPS gleichzeitig abfragen

Dieser Ausdruck war das Ziel:

$("#L_" + idnr).html(text).css({"color": "white", "background-color": bgcolor});

Herzlichen Dank dafür!

So einfach ist das wenn man es weiß. Ich glaube ich suche noch falsch, weil ich solche Beispiele nirgends finde.
War schon knapp dran weil ich das hintereinander machen wollte, aber .html().css() hab ich nirgends gesehen bzw. gefunden.

Edit: Und die Formel war falsch: Abfrge nicht >= 1 sondern kleiner 0 - jetzt muß ich nur noch mit den 64 Bits versuchen

Code:
for (var teiler = 2147483648, idnr = 32; teiler >= 1; teiler /= 2, idnr--) {
                        if (LWord - teiler <0) {
                            var bgcolor = "#00FF00";
                            var text = "\u00A0 Aus \u00A0";
                        } else {
                            LWord -= teiler;
                            var bgcolor = "#ff0000";
                            var text = "\u00A0 Ein \u00A0";
                        }
                        $("#L_" + idnr).html(text).css({"color": "white", "background-color": bgcolor});
                    };
 
Zuletzt bearbeitet:
Hallo Sempervivum,

Gut das ich auf der Seite schon war, und es nicht wahrgenommen habe......:oops:

Ich hab mir eher gedacht, dass js den Wert den es bekommt als Bitmuster wahrnehmen müßte, aber dec bin funktioniert auch nicht so weit, jedenfalls in den Beispielen. Bei der SPS weiß ich nicht, ob oder wie das Format passend eingestellt werden könnte. Dort brauch ich ein LWord um das Bool Array wo die Werte herkommen zu übernehmen. Müßte noch schauen, ob ein anderes Fomat geht, aber auf die schnelle hab ich nix gesehen.

Jedenfalls funktioniert es jetzt wirklich mit 52 Bit und damit kann ich leben. Werden halt zwei Werte Übergeben und zerlegt. Jetzt wird es mal umgesetzt, damit ich den Regelalgorithmus der Heizung/PV Kombi besser beobachten kann, und dann kommen die Strings. Oje.....:eek::confused::rolleyes:.....

Code:
 for (var teiler = 2251799813685248, idnr = 52; teiler >= 1; teiler /= 2, idnr--) {
                        if (LWord - teiler <0) {
                            var bgcolor = "#00FF00";
                            var text = "\u00A0 Aus \u00A0";
                        } else {
                            LWord -= teiler;
                            var bgcolor = "#ff0000";
                            var text = "\u00A0 Ein \u00A0";
                        }
                        $("#L_" + idnr).html(text).css({"color": "white", "background-color": bgcolor});
                    };
 
So, dank Der Hilfe hier gehts einigermaßen dahin. Hab schon kapiert was ein Div und class ist, und die angezeigten Lampen geben tatsächlich schon den Dim Wert durch ihre Helligkeit wieder.

Trotzdem wieder zwei Fragen, wo ich Probleme habe.

Beim zerlegen vom String-String (im Gegensatz zum Bit-String) sind zwei Zeichen drinnen (' und +), die ich entfernen möchte. Ich hätte "replace()" gefunden, und suche die richtige Syntax, wie das direkt bei der Variablen Erstellung eingebunden wird. Hier nur als Beispiel ohne Schleife, wie es "nicht funktioniert". Muß ich hier eine eigene Routine für .replace einbauen, oder gibt es da die richtige Syntax um es in einem Zug zu machen? hab schon alles mögliche versucht.

Code:
$.get("KlimaRead.htm", function(result){ //4 Parameter lesen von SPS
            var W1 = result;
            var Word = result.split("/");
            $('#L1').html(result);
            $('#L2').html(Word[0]).replace(/[+']/g, "");
            $('#L3').html(Word[1]).replace(/[+']/g, "");
            $('#L4').html(Word[2]).replace(/[+']/g, "");
});

Die Quelle ist wie bei den Bits eine String Variable bei der merkwüdigerweise | nicht als Teiler funktioniert (wird nicht geteilt), deswegen hab ich hier / verwenden müssen. Das funktioniert soweit.

Zweite Frage:
Wenn ich beim Tablet jetzt das Licht einschalte, mit einem "Div" das beim drauftippen mit "Licht.hover {opacity: "1.0"} bekommt, wie bekomme ich den Cursor davon wieder weg? Mit dem Tippen wird ein javascript Befehl aufgerufen, was heißt, ich könnte in der Einschalt Routine den Corsor woanders hinsetzen, oder gibt es da eine bessere Lösung?
 
Ok, schaut aus das da irgendwie die Zeichen merkwürdig sind. Deswegen geht da auch kein | fürs zerlegen.

das wird in der Console angezeigt:

string Klima.htm:38:15
Array [ "&#x27;&#x2b;0", "&#x2b;1", "&#x2b;1&#x27;" ] Klima.htm:40:15
&#x27;&#x2b;0/&#x2b;1/&#x2b;1&#x27; Klima.htm:41:12
&#x27;&#x2b;0 Klima.htm:42:12
&#x2b;1 Klima.htm:43:12
&#x2b;1&#x27; Klima.htm:44:12

Und das steht auf der Webseite - String und die Teile

2.jpg
 
Hallo,

wieder eine Frage, wo ich einfach nicht finde wie die Syntax ist.
Einem Input Feld soll als Vorauswahl in "value" der Wert einer Variablen eingetragen werden.

Im Beispiel ist die erste Spalte jetzt nur eine Anzeige, die auch funktioniert (label).
In der zweiten Spalte sollte im Input Feld als Vorauswahl der Wert der Variablen $('#T_0').html angezeigt werden.

Wie ist hier die richtige Syntax, damit in Value der Wert der Variablen steht? Ich kanns einfach nicht finden. (Die variable hat einen Wert, also ist das script nicht das Problem)

Code:
<table>   
    <tr>
        <td class="L_SW_links">Montag</td>
        <td></td>
        <td><label id="T_1">x</label></td>
        <td style="width:28px"><input type="text" maxlength="2" value="('T_0')"/></td>
    </tr>
</table>
    
<script type = "text/javascript">   
    $.get("KlimaRead_Zeiten.htm", function(result){
        var variables = result.split("/");
        var i;
        for (i = 0; i < 84; i++) {
            $('#T_' + i).html(variables[i].replace(/(&#x27;|&#x2b;)/g, ""));
        }
        $('#Alles').html(result);
    });
</script>

Vielen Dank für Hilfe!
 
Ich versuche es genauer zu beschreiben was ich möchte.

Leider gibt es mehrere Inputs. 84 für die Klima Zeiten um genau zu sein.
Ich hab jetzt die Masken zum besseren Verständnis angehängt.

In den Feldern sollen jeweils die Start und Endzeiten eingegeben werden, ABER es sollen die voreingestellten Zeiten, die in den $('#T_1').html - $('#T_84').html enthalten sind, in den Inputfeldern VOR der tatsächlichen EIngabe angezeigt werden.

Wenn ich der Tabellen Zelle eine ID gebe, ist Input weg,
wenn ich dem Input eine ID gebe und die $('#T_1').html zuordne, wird sie nicht angezeit.
Also hab ich gedacht, ich gebe 'value' von Input den Variablenwert. Aber genau da fehlt mir das wie?

Bild 1 zeigt wie es auschauen sollte. (da hab ich jetzt halt die Zeiten(Zahlen) im 'Input value' händisch eingetragen - nur zur Demo)

Nach EIngabe der Zeiten soll dann mit senden der jeweilige Wochentag übertragen werden.
Dazu werden dann die 12 Variablen der Zeile in einen String gepackt und an die SPS geschickt, dort wieder zerlegt, und sollten im Endefekt als neue Vorgabezeiten wieder in der Tabelle angezeigt werden.


Test_Zeiten2.jpg
Test_Zeiten1.jpg
 
Vielen Dank, mit dem Beispiel hat es klick gemacht! find("input").val hat mir auf die Sprünge geholfen.

Hab jetzt jedem Input eine id gegeben und .html gegen .val getauscht. Das war mein Fehler.
Jetzt stehen die Werte drinnen, und ich kann sie auch wieder abfragen, wenn sie gändert werden.

Code:
$.get("KlimaRead_Zeiten.htm", function(result){
    var variables = result.split("/");
    var i;
    for (i = 0; i < 84; i++) {
        $('#T_' + i).val(variables[i].replace(/(&#x27;|&#x2b;)/g, ""));
    }
});

Das Kontrollieren der Eingabewerte, Zusammenfügen und Senden werde ich hinbekommen. (glaub ich jetzt halt noch :))
 
Hallo,

Ich habe eine Anzeige, die Im Firefox so funktioniert, und im Chrome nicht!

Kann mir bitte jemand sagen warum?

Es geht um das Austauschen des Bildes in Abhängigkeit von der Variablen $('#Regen').html

der Teil HTML Code

HTML:
    <div class="Knopf" style="left:670px; top:205px; background-color:#88cc00">
        <div class="Text_in_Knopf">Wetter</div>
        <div>
            <img id="Regen" src="Bilder/Wetter.png" >
        </div>
        <div class="Link_on_Knopf" onclick="Link('Wetter')"></div>
    </div>

Der Javascript Code
Stromausfall funktioniert in beiden Browsern,
Der Bildtausch // Anzeige Wetter Bild, funktioniert nur im Firefox und im Chrome nicht

Javascript:
 $(document).ready(function(){
    $.ajaxSetup({ cache: false });
    setInterval(function() {
        $.get("Read/index.htm", function(result){
            var wert = result.split("/");
            $('#Stromausfall').html(wert[32].replace(/(&#x27;|&#x2b;)/g,"")).Netzausfall();
            $('#Regen').html(wert[33].replace(/(&#x27;|&#x2b;)/g,"")).Wetterbild();
            $('#Offen').html(wert[34].replace(/(&#x27;|&#x2b;)/g,""));
     });
 },1000);
 });
 
 // Anzeige Wetter Bild
jQuery.fn.Wetterbild = function () {
    if ($(this).html() > 0) {
        var bild = "Bilder/Anzeige_Regen2.gif";
        var oben = "-3%";
        var links ="23%";
    } else {
        var bild = "Bilder/Wetter.png";
        var oben = "-9%";
        var links = "28%";
    }
    $(this).attr({'src':bild}).css({"margin-top":oben,"margin-left":links,"height":"40%"});
    return ($(this));
}

 // Anzeige Netzausfall
jQuery.fn.Netzausfall = function () {
    if ($(this).html() == "0") {
        var Text = "Energie";
        var color = "#FFFFFF";  // Weiß
    } else {
        var Text = "Netz Fehler";
        var color = "#FF0000"; // Rot
    }
    $(this).text(Text).css({"color": color});
    return ($(this));
}
 
Hallo, freut mich das Du da bist! :smile:

das ist es aber nicht. War nur der letzte Versuch. Ich hab vorher

Javascript:
if ($(this).html() == "0")

gehabt, und auch schon diverses andere versucht. Die Variable ist glatt 0 oder 1, ganz der gleiche Ursprung wie für Netzausfall, wert[32]. Hab extra dahinter noch eine leere, damit kein anderes Abschluszeichen ist, und habe sie versuchshalber so
HTML:
            <div><label id="Regen"></label></div>
auf der Seite angezeigt. Nichts davor und nichts dahinter soweit ich sehen kann.
Wechselt sauber in beiden Browsern.

Kann das etwas damit zu tun haben, das die SPS nur eine nicht sicher Seite zur Verfügung stellt, oder so was?
 
Ih habe jetzt die Variablen entkoppelt.
Mit
Javascript:
document.getElementById("WetterBild").src = "Bilder/Wetter.png";
kann ich jetzt das Bild von "WetterBild" ändern,
HTML:
 <img id="WetterBild">
abhängig vom "Regen" Wert.


Aber die Syntax damit es mit so was funktioniert
Javascript:
$(WetterBild).attr({'src':bild, 'alt':" "}).css({"margin-top":oben,"margin-left":links,"height":"40%"});
schaffe ich nicht.
 
Ist aber ok. Ich hab noch ein paar so DOM Dinger im Code. Hauptsache es Funktioniert.

Vielen Dank wieder für Deine Hilfe!
 
Es funktioniert! Danke für Deine Ausdauer und herzlichen Dank!
Ich muß beim Abschreiben einen Fehler eingebaut gehabt haben. Ich glaube es war bei der if Abfrage.
 
Zurück
Oben