Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich möchte eigene Fehlermeldungen(Fehlercodes), die ich als String erhalte, gerne sammeln. Dabei soll die neueste Fehlermeldung an oberster Stelle stehen. Es reicht auch aus, dass die letzten 10 Fehler angezeigt werden. Bei mir verschiebt sich aber der neue Fehler um 1 nach unten und überschreibt den alten. Nur Fehler, die nicht "0000" sind, werden hinzugefügt.
Die Initialisierung des Arrays mit "--------" und der Startwert für "ErrorCounter" sind außerhalb des VIs und findet bei Programmstart statt.
So sollte das aussehen:
Gruß vom
Klausenwirt.
04.02.2014, 11:44 (Dieser Beitrag wurde zuletzt bearbeitet: 04.02.2014 11:47 von Trinitatis.)
Ich rate zu "Rotate 1D Array" und "Replace Array Subset":
Bei 5 oder 10 Elementen ist es zwar ziemlich egal, aber die Vorschlag von Marko ist speicher- und performancetechnisch suboptimal. Vor allem ein Build-Array in der vorgeschlagenen Reihenfolge ist (Skalar + 1D-Array) ist im Vergleich zur umgekehrten Reihenfolge (1D-Array + Skalar) langsam.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
(04.02.2014 11:54 )jg schrieb: Vor allem ein Build-Array in der vorgeschlagenen Reihenfolge ist (Skalar + 1D-Array) ist im Vergleich zur umgekehrten Reihenfolge (1D-Array + Skalar) langsam.
Ich hab´s mit einer Arraygröße von 500 und einer Stringlänge je Arrayelement von 500 probiert. Bei 10.000 Schleifendurchläufen ist die Zeit bei BuildArray in beiden Reihenfolgen identisch ca. 3,4s
(04.02.2014 15:17 )GerdW schrieb: hast du an constant folding und debugging options gedacht?
Hallo Gerd,
ich habe das Terminal des anzufügenden Strings in der Schleife verwendet, lese also nicht aus einer Konstanten - in die Konstantenfalle bin ich früher auch schon des öfteren getappt und habe mich gefreut, wie schnell doch alles geht
anbei ein Screenshot (LV8.0) - Stringlänge ist 500 bytes
Ich hab mal die Struktur angehängt, wie die Befehle ankommen und verarbeitet werden. Ich weiß nicht, wie ich hier ein Shift-Register einbauen kann, aber das ist ja nötig, sonst wird immer nur der erste Index verändert. In meiner while-Schleife gehts nicht, ich muss die Werte ja innerhalb anzeigen.
Timeout-gesteuert wird der Fehlerstring abgefragt und soll dann eben im Array ergänzt werden.
Zitat:Ich weiß nicht, wie ich hier ein Shift-Register einbauen kann, aber das ist ja nötig, sonst wird immer nur der erste Index verändert. In meiner while-Schleife gehts nicht, ich muss die Werte ja innerhalb anzeigen.
Wo, wenn nicht in der While-Loop, sollte das Schieberegister sonst platziert werden?
THINK DATAFLOW!
Der andere Case lautet "0000"…
Zitat:Timeout-gesteuert wird der Fehlerstring abgefragt und soll dann eben im Array ergänzt werden.
Wieso überhaupt der Aufwand mit der Event-Struktur, wenn du trotzdem Polling betreibst?
Warum nicht einfach ein WaitUntilNextMultiple mit einer 500 dran?
Wozu die zusätzliche Wartefunktion neben der Eventstruktur?
Ich brauche die Timeout-Struktur, weil ich noch viele andere Ereginisse abfrage. Die zusätzliche Wartefuntion hab ich nur in diesem Besispiel-VI, um die Performance zu verbessern. Ich hab gelesen, man soll eine while-Schleife nicht ohne Wartezeit laufen lassen, da sonst der PC zu viel arbeiten muss.
Zitat:Die zusätzliche Wartefuntion hab ich nur in diesem Besispiel-VI, um die Performance zu verbessern. Ich hab gelesen, man soll eine while-Schleife nicht ohne Wartezeit laufen lassen, da sonst der PC zu viel arbeiten muss.
Das von dir Gelesene hatte schon recht. Aber du hast in deinem Beispiel-VI zwei Wartefunktionen: das Wait und den TimeOut der Eventstruktur. Erstens braucht man nur eine Wartefunktion in der Schleife und zweitens ist der TimeOut der Eventstruktur größer als der Wert am Wait…