Array-Variable bei IPS V2.0 ?

Hallo Zusammen,

mich würde interessieren ob die kommende Version von IPS Daten vom Typ „Array“ unterstützt?
Beziehungsweise man dann auch aus dem Designer die Arrays bearbeiten kann?

Die Version des un/serealizen von Initialisierungs-Array´s ist ja ganz nett aber wenn man zB.: Schaltzeiten darin hinterlegt hat welche dann im Designer anzeigt/verändert werden, wirds ein ganz schöner Programmieraufwand!
Oder gibt es da eine einfache Handhabung?

Besten Dank im Voraus

Hallo,

glaube ich nicht, dann koennte man auch gleich Objekte nochmit integrieren. Das ist aus meiner Sicht eigentlich auch nicht erforderlich, dafuer ist ja PHP da, dass man das entsprechend verarbeiten kann. Du kannst die Arrays ja auch anders speichern und rufst dann wie das WIIPS auch macht, die Arrays als include auf, schneller gehts damit nicht.

Danke für die schnelle Antwort…

Zusammenfassend wäre dann der einfachste Weg ein Array(serealized) zu manipulieren so:
Tab öffnen --> dem Script wird der Name der String Variable(serealized Array) via SYMID übergeben --> unserealized --> auf „temporäre Variable“ (hier Integer) welche in IPS erzeugt wurden, schreiben --> danach im Designer anzeigen/verändern --> mittels „Save-Button“ den ganzen Weg zurück…

So mache ich das dann bei jedem „Array“ welches ich im Designer anzeigen/veränden möchte ?

Hallo,

fuer den Designer bin ich leider nicht der richtige Guru, aber ich denke, das sollte so gehen. Hast Du denn soviele Arrays, die Du anzeigen musst? Normalerweise werden doch nur einfache Variablen angezeigt?

du kannst arrays in Strings ablegen indem du die einzelnen Arrayeinträge mit implode in einen String umwandelst. Diesen „Bandwurm“ kannst du dann sehr leicht mit der funktion explode wieder in ein array umwandeln. Du solltest aber das Trennzeichen mit Bedacht verwenden.

Wenn du sie im Designer in einem memo ausgeben willst reicht es als „Trennzeichen“ ein CR/LF in den String einzufügen

Gruß,

Toni

Na ja, so viele sind es nicht!
Ich habe halt zb. die Schaltzeiten der Nachtabsenkung, UWP Handtuchtrockner oder die Weckzeiten ausgelagert!

Integer Variablen für Stunde und Minute x den ganzen Schaltzeiten…
Wird wohl bessere Lösungen geben - a´la Kalendarium…
Ist halt alles noch nicht fertig, möchte aber mal was „sehen“ bei meinem Projekt.
Denke mir in IPS V2.0/Designer/WIIPS werden mir noch einige andere Möglichkeiten eröffnet…

@ Tonic

kann die Daten im Memo aber nur anzeigen ?

Mache das zurzeit schon so bei guyabanos´s Script „Newsticker“ so, da zeige ich einfach die letzten 5 quittierten Meldungen an.

Nett wäre es gewesen, wenn man auch Hex# Wort -Variabeln anlegen könnte, die dann eben auch binär angezeigt werden. Ach, ich tue mich immer so schwer mit dem Erklären.

Also, Beispiel:

SetValueWord(„Variable“, 1110 1101);

Interessant wäre das zur Gruppierung von Variablen die an sich auch zusammengehören in der Anwendung.

Als Sahnehäubchen wären dann auch wenn man einzelen Bits auch auslesen könnte, somit könnte man sich viele BOOL-Variablen ersparen.

Beispiel:

GetValueBit(„Variable“, 0) Dies wäre z.B. das less significant bit also 2^0.
GetValueBit(„Variabel“, 4) wäre dann Bit 2^4

beschreiben wäre dann z.B. SetValueBit(„Variable“, 4, TRUE)

mfG Franz

Hallo Franz,

Das geht schon, indem man etwas Umwandlung betreibt. Schau Dir mal die in PHP moeglichen Funktionen dazu an. Fuer Dein Beispiel wuerde das folgendes bedeuten:


<?php
$franz = '11101101';
SetValueInteger ( "Variable", dechex($franz) );

//und rueckwaerts:

$franz = hexdec( GetValueInteger ( "Variable") );

?>

Interessant wäre das zur Gruppierung von Variablen die an sich auch zusammengehören in der Anwendung.

Als Sahnehäubchen wären dann auch wenn man einzelen Bits auch auslesen könnte, somit könnte man sich viele BOOL-Variablen ersparen.

Beispiel:

GetValueBit(„Variable“, 0) Dies wäre z.B. das less significant bit also 2^0.
GetValueBit(„Variabel“, 4) wäre dann Bit 2^4

beschreiben wäre dann z.B. SetValueBit(„Variable“, 4, TRUE)

mfG Franz

alles klar?

Danke Torro,

ich bin heute nicht umsonst aufgestanden.

Jetzt sprudeln schon wieder neue Ideen

mfG Franz

Wenn sie erstmal drin sind kannst du damit machen was du willst…

Toni

Stimmt - war auf „read only“ gesetzt…

Ist aber an einem Touch-Screen auch nicht wirklich hilfreich.
Sollte mit up/down Button oder einem Slide veränderbar sein.
Da werde ich wohl nicht drum rumkommen alle Var´s einzeln rauszulegen, oder?

Eine Möglichkeit wäre auch noch der Übersichthalber das Memo zu verwenden und nur eine editierbare Variable in ein Feld mittels Schleife(up/down) zu holen.

Ist ja ganz schön aufwendig da die richtigen Werte zu bekommen, wenn ich da nur an Limits bei den Variablen denke.
Zumindest gibt es softwaretechnisch keine Grenzen - nur die Eigenen…:smiley:

Hallo Franz,

das von Torro genannte Beispiel hat einen kleinen Fehler. Die benötigten Funktionen sind bindec() und decbin().

Die von Dir vermissten Funktionen kannst Du Dir ganz leicht selbst basteln. Z.B. so:

// setzt in der Variablen $VarName das Bit Nr. $bit auf den Wert $val
function SetValueBit($VarName, $bit, $val)
{
  $v = GetValueInteger($VarName);
  $v &=  ~(1 << $bit);               // löscht das Bit
  $v |= $val << $bit;                // setzt das Bit entsprechend $val (0 oder 1)
  SetValueInteger($VarName, $v);
}

// liest aus der Variablen $VarName das Bit Nr. $bit
function GetValueBit($VarName, $bit)
{
  $v = GetValueInteger($VarName);
  return ($v >> $bit) & 1;           // liefert 0 oder 1
}

Damit stehen Dir in einer IPS-Variablen vom Typ Integer praktisch 32 Quasi-Boolean Variablen zur Verfügung.

Gruß
HJH

Hallo Franz,

stimmt, ich bin mal wieder von Hex-Werten ausgegangen, da ich diese in der Mache hatte…so ist es, wenn man sich nicht 100% konzentriert :smiley:

Danke an HJH und an Torro.

Mein Projekt läuft stabil und es gibt auch nicht viel mehr hinzuzufügen. Jetzt fange ich damit an, verschiedene Skripte zu vereinfachen und IPS Variablen einzusparen.
Mit diesem Tipp wird das sicherlich gut klappen

mfG Franz