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 lese Daten über den Comport ein. Anschliessend verarbeite ich diese weiter und am Schluss möchte ich den Serial-Data String vom Comport löschen. Mein String ist auch leer, er zeigt nichts an. Wenn nun neue Daten über den Comport übertragen werden, werde diese im Anschluss an die alten geschrieben. Es stehen also zuerst die alten Daten im String und dann dahinter die neuen Daten. Ich bekomm das irgendwie nicht hin.
Gruß und Bitte um Hilfe
Anzeige
09.11.2007, 09:23 (Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2007 09:24 von jg.)
Ich glaube du musst die Daten nicht sammeln, sondern gleich verarbeiten. Du hängst die neuen Daten an die alten an, wahrscheinlich mit Concantenate String. Schliesse einfach den String, den du empfangst, also ohne noch irgendwas damit zu machen direkt an dein DatenverarbeitungsVI.
Erstens macht mal Screenshots am besten im PNG Format: Strg+A -> Strg+C -> Paint öffnen -> Strg+V -> Datei als PNG abspeichern -> Hier hochladen.
Zweitens musst du versuchen kleine Blockdiagramme zu machen, wenn es über eine Bildschirmgrösse wächst, dann einfach einen Bereich markieren und
Edit -> Create SubVI
anwenden. Hier muss man aufpassen, dass in dem markierten Bereich keine lokalen Variablen und Property Nodes vorkommen.
Drittens wie schon gesagt, am besten eine sofortige Auswertung der empfangenen Daten ausführen ohne den String aneinander zu hängen. Wie sieht denn das Empfangene aus? Zeig mal.
ich habe kein Paint auf meinem Rechner. Ich habe zu viele Variablen um Blockdiagramme zu machen. Ich habe mal das Grund Vi angehängt. In dieser Zeitschleife habe ich Sequenzschleifen (1-17). Das VI startet erst, wenn Daten an der RS 232 ankommen mit der Verarbeitung. Am Schluss sollen diese wieder gelöscht werden. Ich überschreibe den Serial data String mit einem Leerzeichen.
Bitte helft mir, ich stehe kurz vor der Verzweiflung weil ich da schon so lange rum eier.
Gruß Michael
(VI LV 7.1)
13.11.2007, 21:38 (Dieser Beitrag wurde zuletzt bearbeitet: 13.11.2007 21:42 von jg.)
WO überschreibst du deinen String mit einem Leerstring??? NIRGENDS ausser vor deiner Schleife! In deinem Bsp-VI hängst du nur jedes Mal, wenn neue Daten gelesen werden, diese an den schon bestehenden String an, aber löschen tust du an keiner Stelle etwas, da du den Wert am Ende der Schleife per Shift Register ja wieder an den Anfang den nächsten Schleifendurchlauf weitergibst.
MfG, Jens
#1600
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!
ich hab mein Programm, die 18 Schleife nicht hochgeladen, da dies zu komplex ist von den Variablen her. Ich bekomm die Daten, dann durchlauf ich die 18 Schleifen (diese sind in der Zeitschleife / nicht aufgeführt). In der 18. Schleife möchte ich den Serial Data String leeren. Wenn ich diesen leere zeigt der String zwar nichts an aber wenn die neuen Daten übertragen werden kommen zuerst die alten und die neuen Daten werden angehängt. (siehe pdf-Mail von gestern)
Und was ist der Inhalt des Strings, bevor er rechts am Rand in das Shift-Register geschoben wird? Laut deines Code-Bsp. der komplette String. Und der wird somit an den nächsten Schleifendurchlauf weitergegeben. Schau dir das mal im Highlight-Modus an oder kreiere mal zu Test-Zwecken genau an dieser Stelle einen Indikator, vielleicht verstehst du dann, was Eugen und ich meinen.
MfG, Jens
P.S.: Langsam zweifle ich, ob du das Konzept des Shift-Registers überhaupt verstehst?
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!
Zum besseren Verständnis eines Shift-Registers, bau mal folgendes nach:
So wie ich die bisher verstehe, glaubst du, dass im Indikator "Numeric" immer eine 0 drin steht. Dem ist nicht so, sondern er wird bei jedem Durchlauf um eins erhöht.
Und genauso ist auch dein Bsp.-VI.
MfG, 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!