LabVIEWForum.de
dynamische Clustergröße - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: dynamische Clustergröße (/Thread-dynamische-Clustergroesse)

Seiten: 1 2


dynamische Clustergröße - Guest - 01.11.2007 19:30

Hallo,
ich komme mal wieder an einer Stelle nicht weiter. Ist eigentlich nur eine Platzfrage.

Ich habe 10 Sensoren, deren Daten ich als txt-File bekomme. Ich filtere aus diesem File eine Zeile die die angeschalteten Sensoren gibt.
Ist die Zeile 0110000010 so sind z.B. die Sensoren 2, 3 und 9 aktiv. Es können theoretisch maximal 8 Sensoren gleichzeitig an sein.
Im Rest des Files stehen Messwerte, die ich in einem Cluster anzeigen will (siehe Bild).

Nun möchte ich aber mein Frontpanel nicht immer mit 8 Messwerttabellen vollknallen, sondern immer nur die Anzahl Tabellen da haben, wie auch Sensoren an sind, also im Fall oben 3 Tabellen.

Gibt es eine Möglichkeit die Anzahl der Untercluster an die Anahl der Sensoren anzupassen ?

Danke für eure Hilfe
Mfg Karl-Heinz


dynamische Clustergröße - Achim - 02.11.2007 06:48

' schrieb:Gibt es eine Möglichkeit die Anzahl der Untercluster an die Anahl der Sensoren anzupassen ?

Hi,

was hälst du davon, die Messwerte nicht in nem Cluster darzustellen sondern in nem 1D-Array (siehe Anhang).
Du filterst wie bisher deine Daten und schreibst nur die notwendigen in dein Sensor-Daten-Array, inkl. einer eindeutigen Bezeichnung

Zu deiner Frage:
In nem Cluster kannst du die Anzahl der Elemente nicht ändern, du kannst nur einzelne Elemente ausblenden! Aber dadurch hast du keine Platzersparnis...

Gruß
Achim

[attachment=9460](LV 8.5)


dynamische Clustergröße - Guest - 02.11.2007 08:05

Danke Achim,

schade das es nicht so funktioniert, wie ich erhofft habe.
Danke das du dir die Mühe gemacht hast eine andere Möglichkeit aufzusetzen.
Würde mir gerne deine Alternative anschauen, hab aber nur LV8. Könntest du das VI nochmal runterkonvertieren ?

Danke Karl-Heinz


dynamische Clustergröße - Achim - 02.11.2007 08:50

' schrieb:Würde mir gerne deine Alternative anschauen, hab aber nur LV8. Könntest du das VI nochmal runterkonvertieren ?

Hier für 8.0:
[attachment=9461]


dynamische Clustergröße - Guest - 02.11.2007 15:43

Danke Achim, sieht echt cool aus was du da gebastelt hast.

Ich habe jetzt beispielsweise einen String mit Messwerten für 2 Sensoren, wie teilt die control die auf die arrays auf ?
Wieso eigentlich überhaupt ctl. soll doch ein indicator sein ?
Und wie bekommt die ctl mit von welchen Sensoren jetzt gerade Daten kommen ?
Leider versteh ich noch nicht so ganz, wie die ctl arbeitet. Kann ich mir das irgendwo anschauen, oder könntest du es mir kurz erklären ?

Vielen Dank schonmal.
Mfg Karl-Heinz


dynamische Clustergröße - Achim - 02.11.2007 16:19

' schrieb:Danke Achim, sieht echt cool aus was du da gebastelt hast.

Ich habe jetzt beispielsweise einen String mit Messwerten für 2 Sensoren, wie teilt die control die auf die arrays auf ?
Wieso eigentlich überhaupt ctl. soll doch ein indicator sein ?
Und wie bekommt die ctl mit von welchen Sensoren jetzt gerade Daten kommen ?
Leider versteh ich noch nicht so ganz, wie die ctl arbeitet. Kann ich mir das irgendwo anschauen, oder könntest du es mir kurz erklären ?

Vielen Dank schonmal.
Mfg Karl-Heinz


Uiuiuiuiui....

1. Indicator und Control sind im Prinzip das gleiche...man kann allerdings ein solches Element nicht als *.indicator speichern, sondern nur als *.ctl. Mach nen rechtsklick drauf und wähle "Change to indicator"

2. Du musst selber auswählen, welche Daten du dann in den Indicator schreibst...am besten machst du das mit der Funktion "Index Array", dieser übergibst du dein "Gesamt-Sensor-Array" und die Indizes, die du daraus darstellen willst...die Teil-Arrays verbindest du wieder mit "BuildArray" und beschreibst damit deinen Indicator

3. Das "Gesamt-Sensor-Array" musst du dir aus dem Datenstring erstellen, den du aus deiner Datei eingelesen hast ...abzüglich deiner Header-Zeile, die die aktiven Sensoren markiert

Ach...das dauert alles so lange...poste mal deine Datei, dann schau ich morgen mal rein und bastel da was zusammen...falls sich nicht vorher jemand erbarmt!

Gruß
Achim


dynamische Clustergröße - Guest - 04.11.2007 19:26

Danke für dein Angebot,

um ehrlich zu sein, wollte ich diesmal gleich von Anfang an richtig anfangen, deshalb habe ich gefragt bevor ich losprogrammiere und dann wie die letzten Male wieder von vorne anfangen muss, was in LV doch sehr zeitaufwendig sein kann.
Habe es schon mit Clustern versucht, aber das wird nix aufgrund der Art wie das Messdaten-File aufgebaut ist.

Ich habe mir deinen Indicator nochmal angeschaut, woher kriegt er denn seine Information welcher Sensor gerade aktiv ist (Ich meine den String "Sensor x") ?

Mein größtes Problem ist die Art wie ich die Daten bekomme, diese kann ich aber leider nicht ändern (als txt-File).

Hier also nochmal mein Problem:

Ich habe erst den Header, wo ein Timestamp drin ist und die erwähnte Aufschlüsselung, welcher Sensor gerade an ist. Danach kommt ein Seperator CR LF ("0D0A" HEX).
Danach kommt eine Messwertzeile, welche so aufgebaut ist, wie im Bild unten dargestellt.
Die Sensoren a,b,c sind dabei nur die, welche Daten senden. Dies können wie gesagt von 0-8 Sensoren sein.
Nach jeder Messwertzeile kommt ein Seperator LF ("0A" HEX).
Die nächsten Daten sollen dann wieder in eine neue Zeile geschrieben werden.

Dies passiert, bis das Ende der Datei erreicht ist. Bis dahin können schonmal gut und gerne 20 Zeilen mit Daten vergehen.

Nach der letzten Messwertzeile kommt wieder ein Seperator CR LF und danach noch eine footline mit der Zeit, zu der die Messung zu Ende war.

Beim nächsten Daten-File können dann wieder ganz andere Sensoren Daten schicken, so dass ersichtlich seien muss, welche Daten von welchem Sensor kommen.

Ich habe nun keinen blassen Schimmer, wie ich die Daten korrekt darstellen soll.
Wäre vielleicht eine Tabelle eine Alternative ? Oder vielleicht ein transponiertes Array, welches nach LF in eine neue Zeile springt ?
Wobei mir bei es bei mir bei den beiden Sachen bei der Umsetzung extrem hapert.

Ich bin wirklich für jede Hilfe extrem dankbar und hoffe mich mal revanchieren zu können.

Mfg Karl-Heinz

(VI LV 8.0)


dynamische Clustergröße - Achim - 05.11.2007 06:34

Hi Karl-Heinz,

warum kommst du erst jetzt mit den Details rüber? Das war aus deiner ursprünglichen Anfrage nicht rauszulesen...Und warum hast du nicht einfach mal ein File mit konkreten Daten hier gepostet? Was auch noch interessant wäre: Wie oft kriegst du ein solches neues File, und wie stellst du dir die Darstellung dann vor? Kommt z.B. ein neues File jede Minute? Was machst du dann mit der Darstellung der vorhergehenden Daten, werden die einfach verworfen? Eine ständig wechselnde tabellarische Ansicht hat ja so gut wie keinen Informationswert für den Benutzer...wäre es nicht evtl. sinnvoll, lieber Kurven aufzutragen? Gehören die fünf Werte denn zusammen, d.h. ist das ein zusammenhängender Wert? Oder sind das fünf verschiedende Messwerte, die hintereinander gemessen wurden? Oder sind das fünf verschiedene Messwerte, die unterschiedliche Parameter darstellen (Strom, Spannung, Durchfluss, etc.)?

Fragen über Fragen...

Gruß
Achim


dynamische Clustergröße - Guest - 05.11.2007 22:16

Hi Achim,

einen Ausschnitt mit Header, 2 Messwertreihen und Footline habe ich als Default-Werte in meinem VI gespeichert, so dass man sich anschauen kann was ich meine.
Es hat sich noch ein bisschen was geändert. Ich muss nun doch alle Sensoren darstellen, auch wenn für diese keine Daten vorliegen und es soll auch eine Tabelle werden. Das heißt, wenn im Header für Sender 1 eine 0 steht (er also keine Daten gesendet hat), dann sollen in die Tabelle für die 5 Werte 5 Nullen eingetragen werden.
Die Daten an sich sind 2x Spannung, 2xStrom, 1x Messbereich (einfacher Zahlenwert). Und es sieht so aus, als ob hinter jeder Zeile, also auch bei den Messwerten, CR LF steht und nicht nur LF.
Daten bekomme ich aller 1 Stunde (+- ein paar Minuten). Die neuen Daten sollen dabei die alten ersetzen. Da die Daten als Files in einem Ordner gespeichert werden, nutze ich dann das VI was hieraus entstehen soll, um in einem extra Frontpanel alte Files einlesen zu können.

Ich habe heute mal mit einem grossen Array rumgespielt und es geschafft, für eine Messwertzeile, die Sensordaten für die aktiven Sensoren (im Header eine 1) so zu zerpflücken, sodass alle Messwerte schön brav hintereinanderstehen, wie sie sollen (allerdings nur für 2 Daten liefernde Sensoren). Dir werden zwar vielleicht die Haare zu Berge stehen, aber ich hatte keine Ahnung, wie ich mich dem Ganzen sonst nähern sollte. Aber ich habe keine Ahnunung wie sich das für n Sensoren und x Messwertzeilen umsetzen lässt und noch dazu die ganzen Nullen für die nichtaktiven Sensoren dazwischen geschrieben werden sollen.

Ich hoffe du kannst mir eine Anregung geben, wie ich das Umsetzen kann.

Mfg Karl-Heinz


dynamische Clustergröße - Achim - 06.11.2007 09:29

Hi,

ich glaube, du weißt selber noch nicht so genau, wie deine Daten aufgebaut sind, oder? Ich hab jetzt nach jeweils vier Byte aufgetrennt, auch der Zeilenumbruch hat vier Byte!

Schau dir mal das Beispiel an, so sollte es funktionieren!

Im oberen Teil des VI wird ein boolesches Array mit den aktiven Sensoren erzeugt, das hab ich auf die Daten-Extraktion jetzt auch schon angewandt! Es waren in deinem String ja bloß zwei Sensoren drin, deswegen hab ich die Daten des ersten Sensors 9x reinkopiert und deine Daten des zweiten Sensors rausgeschmissen.

Du müsstest das halt mal mit nem kompletten Datensatz probieren, es wäre auch schön gewesen, wenn du (wie ich dich schon gebeten hatte), diese kompletten Daten mal hier als Datei zur Verfügung stellst...

Gruß
Achim

[attachment=9517]