Zum Hauptinhalt springen

Variablen - allgemeine Infos

NeuroomNet unterstützt folgende Datentypen

IconNameBescheibungWertebeispiele
Icon Boolsche VariableBoolBoolsche Werte (Wahrheitswert) können nur zwei Zustände annehmen.true / false
Icon Number VariableNumberGanzzahlige Werte0 / 1 / 42
Icon Float VariableFloatFließkommazahl3,14 / 0,5
Icon Text VariableTextZeichenkettenHallo / 0xff5a11
Icon Time VariableTimeFormatierte Zeit08:15 / 8:15am
Icon DateTime VariableDateTimeFormatiertes Datum und Zeit15.02.2023/08:15

Zusätzlich steht jeder Datentyp als Liste zur Verfügung. Das Icon hat dabei links drei kleine Punkte: Icon Bool Array Icon Number Array Icon Float Array Icon Text Array

Listen beinhalten, wie der Name schon sagt, mehrere Bool, Number, Float etc. - Werte.

Grundgedanken von Datentypen

Text:     1 + 2 = 12

Zahl:    1 + 2 = 3

Aus diesem Beispiel lässt sich leicht herleiten, dass es einen großen Unterschied macht, ob eine verarbeitende Software entsprechende Eingaben als Zahl oder Text interpretiert.

Traditionell werden in den meisten Hochsprachen Datentypen für Variablen verwendet. Einige Sprachen verzichten auch auf das Konzept, da es teils bequemer ist. Was allerdings meist mit einem höheren Aufwand beim Finden von Laufzeitfehlern erkauft werden muss.

In NeuroomNet haben wir uns ebenfalls für Datentypen entschieden, da NeuroomNet hauptsächlich mit Geräten vieler Hersteller kommuniziert und diese dabei in ihren Protokollen meist schon Datentypen definieren. Wenn man also von einem Endgerät einen Code in der Form von "0123" geschickt bekommt, kann man sich auch darauf verlassen das dies so beibehalten wird, weil man definiert hat - hier kommt ein Text. Bei einer automatischen Konvertierung würde dieser Text wahrscheinlich als Zahl interpretiert und zu '123' gewandelt.

Natürlich kann man in NeuroomNet auch explizit einen Datentyp in den anderen wandeln, wenn man dies möchte.

Typkonvertierung

Sie können einen Datentyp in einen anderen überführen. In Hochsprachen wird dieser Vorgang auch Typecasting genannt. Allerdings muss eine Konvertierung dazu technisch möglich sein. Folgende Beispiele sollen verdeutlichen, welche Konvertierungen funktionieren und welche nicht.

Hinweis:
Es kann so gut wie alles in einen Text konvertiert werden, deshalb ist diese Richtung hier nicht extra aufgeführt.

Beispiele für die Konvertierung einer Text-Variable ("Original Text") nach Number, Float, Bool:

Original TextKonvertieren in NumberKonvertieren in FloatKonvertieren in Bool
"Hallo"FehlerFehlertrue
"0"00,0false
"1"11,0true
"3,14"33,14true
"1234"12341234,0true
"12 34"FehlerFehlertrue
""00,0false

Sichtbarkeit von Variablen

Die Sichbarkeit von Variablen begegnet dem Anwender hauptsächlich in den Skript Blöcken. Sichtbar bedeutet, von wo kann ich auf diese Variablen zugreifen. Wir unterscheiden 'Globale' und 'Block' Variablen. Auf Variablen, die mit dem Attribut 'Global' angelegt werden, kann von überall zugegriffen werden, beispielsweise von einem Dashboard oder allen Skripten etc.

Variablen mit dem Attribut 'Block' können nur von Ereignissen bzw. Aktionen dieses einen Skript-Blocks verwendet werden, in dem sie erstellt worden sind.

Icon globale Variable Symbol für Globale Variablen

Icon Block-Variable Symbol für Block Variablen

Warum Globale und Block Variablen?

Eigentlich würden Variablen, auf die man von überall zugreifen kann, für alle Anwendungsfälle genügen. Soweit, so richtig, aber unpraktisch. Die Anzahl der globalen Variablen kann dann schnell in die Höhe schießen und unübersichtlich werden.

Oft hat man den Fall, dass man den Parameter von einem Ereignis in eine Variable schreibt, nur um im selben Block mit einer IF Bedingung zu testen, ob ein bestimmter Wert in der Variable steht. Da die Namen von Globalen Variablen eindeutig sein müssen, müsste man sich für jeden Block einen neuen einzigartigen Namen ausdenken und die Liste der Variablen würde sehr schnell sehr lang werden. Wenn eine Variable nur im Block sichtbar ist, kann man für Blöcke die ähnliches tun, immer die selben Variablennamen verwenden und man läuft nicht Gefahr, die Variable irgendwo anders zu verwenden und irgendwelche Seiteneffekte auszulösen. Daher können auch ganze Blöcke inklusive Variablen kopiert werden. Meist muss man dann nur noch ein paar Konstanten oder Komponentennamen anpassen.