05.11.2015, 17:55
Beitrag #1
|
|
|
05.11.2015, 18:02
(Dieser Beitrag wurde zuletzt bearbeitet: 05.11.2015 18:06 von GerdW.)
Beitrag #2
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Schieberegler Wertänderung
Hallo HCO,
Zitat:Das lief alles 1a bis ich mein Timeoutcase für eine Datenverarbeitung verwendeten muss und ich das Ereignistimeout der Event Struktur von -1 auf 1 setzen musste.
Einfache Lösung: die Datenverarbeitung aus dem Timeout heraus nehmen und wieder -1 als Timeout-Wert einstellen!
Dass du die Datenverarbeitung im Timeout-Event durchführen MUSST, bezweifle ich. Oder zwingt man dich dazu?
Wenn du den timeout auf 1 (ms!) stellst, wird deine Datenverarbeitung nach spätestens 1ms aufgerufen. Wenn diese Datenverarbeitung nun etwas Zeit benötigt (es reichen schon 10ms, aber es fehlt mal wieder ein VI, um das zu beurteilen), wird die Abarbeitung anderer Events entsprechend verzögert: ein ValueChange eines Schiebereglers wird als stark verzögert wahrgenommen… (Hinzu kommt der unschöne Nebeneffekt von Schiebern mit Defaulteinstellungen, das du wahnsinnig viele ValueChange-Events erzeugst: für jedes Pixel, um das sich der Schieber bewegt, gibt es ein Event!)
Wenn du wirklich mit 1kHz Daten verarbeiten musst, dann mach das in einer parallel laufenden Schleife!
Grundregel Event-Struktur: die Abarbeitung von Events sollte so kurz wie möglich dauern, damit es nicht zu Verzögerungen bei anderen Events kommt…
|
|
|
05.11.2015, 18:11
Beitrag #3
|
|
|
05.11.2015, 18:13
Beitrag #4
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: Schieberegler Wertänderung
Ich habe von " könnte im Timeout-Case" geschrieben. Und von 1 ms Sekunde Time-out habe ich auch nichts geschrieben. Ist ja auch völlig unsinnig, wenn dir erstens die Queue das Buffern übernimmt und zweitens nur jede Sekunde ein neuer Datensatz in der Queue landet.
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!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
06.11.2015, 07:56
Beitrag #6
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: Schieberegler Wertänderung
Erstelle eine eigene Schleife für die Datenspeicherung, und in der führst du auch das Schieberegister mit deinem File-Pointer und packst auch die File-Erstellung mit rein (quasi eine State-Machine mit den Fällen: File erstellen, Daten speichern, File schließen). Das steuerst du dann per Queue. Dazu kannst du z.B. den Datentyp der Queue, die du schon jetzt für die Datenweitergabe verwendest, erweitern um weitere Kommandos und Elemente.
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!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
06.11.2015, 11:00
Beitrag #7
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Schieberegler Wertänderung
Hallo HCO,
denkst du manchmal über das nach, was du so prorammierst?
Du hast einen Timeout-Eventcase, der nach 1ms ohne weitere Events aufgerufen wird. Im Event wartest du dann (bis zu) 500ms auf einen Queue-Eintrag, der nur im 1000ms-Takt zu erwarten ist…
Und du wunderst dich, warum deine ValueChange-Events des Schiebereglers stark verzögert abgearbeitet werden?
Und was soll der dieser RubeGoldberg: Da werden mehrere Datenarrays in einen Cluster geschrieben, um diesen Cluster dann Nanosekunden später wieder auszulesen? Warum nicht einfach (möglichst gerade) Drähte verwenden???
|
|
|
06.11.2015, 11:24
Beitrag #8
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: Schieberegler Wertänderung
(06.11.2015 11:00 )GerdW schrieb: Und was soll der dieser RubeGoldberg: Da werden mehrere Datenarrays in einen Cluster geschrieben, um diesen Cluster dann Nanosekunden später wieder auszulesen?
Daran bin wahrscheinlich ich Schuld: s. Anhang aus http://www.labviewforum.de/Thread-String...#pid179445
Allerdings bin ich bei diesem Bsp davon ausgegangen, dass die Spalten wie schon vorher unterschiedliche Breiten bekommen sollten, und dann wäre das mit mit 1x "Array to Spreadsheet-String" erledigt gewesen.
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!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
06.11.2015, 14:18
Beitrag #9
|
|
|
06.11.2015, 16:21
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Schieberegler Wertänderung
Hallo HCO,
ein Problem bleibt noch: deine Eventstruktur kann immer noch bis zu einer Sekunde lang blockiert sein - durch die Wartezeit beim Dequeue.
Nochmal eine der Grundregeln bei der Eventstruktur: Eventcases sollten so schnell wie möglich abgearbeitet sein!
Ich würde sowas nicht im Tiemout einer Event-Struktur erledigen, die sich um UI-Dinge kümmern soll. Die von Jens vorgeschlagene Statemachine wäre auch mein Favorit!
(Einer der Gründe: möglichst klare Trennung von UI-Handling und Datenverarbeitung…)
|
|
|
| |