LabVIEWForum.de - Lesen des Ini-Files bei cRIO dauert sehr lange

LabVIEWForum.de

Normale Version: Lesen des Ini-Files bei cRIO dauert sehr lange
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.

MichaDu

Hallo,

ich verwende ein CompactRIO und lese bei Systemstart ein Ini-File, das Startwerte für sämtliche Controls und Indikatoren der Benutzeroberfläche enthält. Da ich sehr viele davon habe (etwa 700, darunter auch Tabellen mit vielen Parametern), dauert das Lesen der Datei sehr lange (fast 2 Minuten)! Die Datei ist etwa 56kB groß.

Gibt es vielleicht eine Verbesserungsmöglichkeit oder eine Alternative hierzu, um das ganze zu beschleunigen?
Das könnte mir sehr weiterhelfen!

Vielen Dank!
' schrieb:Gibt es vielleicht eine Verbesserungsmöglichkeit oder eine Alternative hierzu, um das ganze zu beschleunigen?

Sollen wir raten oder zeigst du uns den Codeschnipsel in dem du einliest und die Werte zuordnest?

Alternative wäre z.B. mehrere kleine Dateien einzulesen. Zuerst die wichtigste (damit der User sieht das was passiert und er anfangen kann mit *was auch immer*), dann im Hintergrund den Rest einlesen.


MfG SeBa
Wahrscheinlich dauer das Lesen der Datei gar nicht so lange, ich tippe mal, dass das setzen der Controls so lange dauert.

Vielleicht hilft das hier weiter...

[attachment=20273]

[attachment=20272]

Lv82_img


VDB

MichaDu

Natürlich braucht ihr nicht raten ;-)

Im Bild ist der Codeschnippsel. Er enthält ein VI, das ich aus der OpenG-Bibliothek verwendet habe
http://wiki.openg.org/Read_Key_(Variant)

Ich lese nacheinander die Keys aus dem Ini-File und vergleiche sie mit meinen Controls/Indikatoren. Dafür verwende ich das OpenG-VI mit einer Suchschleife, bei der der eingelesene Key mit allen Controls/Indikatoren verglichen wird. Ich vermute mal, dass es deshalb so lange dauert. Das ist aber dafür auch komfortabel, da man sich bei Codeänderungen nicht jedesmal um eventuelle neue Keys kümmern muss. "Von Hand" möchte ich daher die Parameter nicht unbedingt setzen.

Ist ein neues Control hinzugekommen, eins weggefallen oder geändert worden, lasse ich mir einen Hinweis ausgeben. Das finde ich auch sinnvoll, wenn man neuere Versionen mit einem alten Ini-File füttern will bzw. umgekehrt.

LV8.5

Danke schonmal!

MichaDu

Hallo VDB,

vielen Dank für den Hinweis! Du hast recht: das Lesen der Datei geht sehr schnell. Sobald ich aber die Controls setze oder lese, dauert es sehr lange. Insbesondere bei großen 3D-Tabellen wird ordentlich auf die Bremse getreten :-((

Ich hatte dein VI mal ausprobiert, aber irgendwie ist mir keine Verbesserung aufgefallen. Vielleicht habe ich auch was falsch gemacht. Mir ist die Funktionsweise auch noch nicht ganz klar. Werden hierbei nur Controls gesetzt, deren Werte sich geändert haben? In meiner Applikation vergleiche ich alle Werte aus der Datei mit denen vom Frontpanel, d.h. ich müsste in jedem Fall immer alle Controls durchgehen.

Bei den riesigen Tabellen muss ich mir was einfallen lassen. Das Setzen dauert hier ewig. Eventuell splitten, weil ich da nicht unbedingt alle Werte bei Start benötige.
Das Setzen von Controls per Referenz ist so ziemlich das langsamste, was man in LabVIEW machen kann. Und dann auch noch bei großen 2D-Arrays..., für ein RT-Target eigentlich tödlich und ein No-Go.

Überleg dir möglicherweise ein anderes Konzept, z.B. das Zwischenspeichern deiner Werte in einem FGV-VI.

Gruß, Jens

MichaDu

Hallo Jens,

was bedeutet denn FGV und wie funktioniert sowas? Gibt es sonst keine "komfortable" Alternative, die Werte vom Frontpanel zu speichern/laden, ohne das mühselig von Hand für jedes Control einzeln zu machen?
FGV = Funktionale globale Variable, Beispiele sollten massig im Forum zu finden sein.

Ansonsten wirds schwierig.

Mit den Referenzen ist es komfortabel, aber halt langsam, zwecks der PropertyNodes. Da kommst du nicht raus. Eine andere komfortable Möglichkeit fällt mir nicht ein.

Die Alternative ist angepasst auf das spezifische Frontpanel, dann ist die Performance voraussichtlich besser, aber du hast mehr Arbeit.

Was dir bei einem RT-Target lieber ist, diese Entscheidung kann ich dir aber nicht abnehmen.

Gruß, Jens
Referenz-URLs