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!
04.06.2015, 13:29 (Dieser Beitrag wurde zuletzt bearbeitet: 04.06.2015 13:39 von knq.)
die Antwort hat mir sehr geholfen. Vielen dank nochmal.
Jetzt bekomme ich den Einzelwert heraus .
Die Versuche die Werte in Double umzuwandeln scheitern jedoch.
Denn ich weiß nicht wie ich die Einheit herausziehen soll bzw. wie ich die Zahl aus dem String herauslöschen soll, da sie immer variiert und keine Konstante ist.
Und wie soll ich meine Byteanzahl im Visa read einstellen . ich habe sie auf 100 eingestellt, da so bei der Messzeit (100ms) die Werte flüssig angezeigt werden.
Gruß knq
PS: Ich habe VI´s angehängt ;P
Ok , durch die Funktion String suchen und teilen hat sich das mit der Einheit schonmal erledigt;P
04.06.2015, 14:30 (Dieser Beitrag wurde zuletzt bearbeitet: 04.06.2015 14:34 von knq.)
Das mit dem Double Wert geht mit der Funktion Bruch/exponential- String nach Zahl. Vorher noch mit Muster suchen den Punkt durch ein Komma ersetzen;P
Jetzt taucht ab und zu nur dieser Fehler auf.
Was kann ich da machen? Der hat bestimmt mit der Bytezahl im Visa lesen Baustein zutun.
04.06.2015, 14:46 (Dieser Beitrag wurde zuletzt bearbeitet: 04.06.2015 14:47 von Trinitatis.)
(04.06.2015 14:30 )knq schrieb: Das mit dem Double Wert geht mit der Funktion Bruch/exponential- String nach Zahl. Vorher noch mit Muster suchen den Punkt durch ein Komma ersetzen;P
Du musst die Erkennung des Systemdezimalzeichens deaktivieren (in der Funktion Bruch/exponential- String nach Zahl) Dann kannst du dir die Punkt -> Komma-Ersetzung sparen
(04.06.2015 14:30 )knq schrieb: Jetzt taucht ab und zu nur dieser Fehler auf.
Was kann ich da machen? Der hat bestimmt mit der Bytezahl im Visa lesen Baustein zutun.
Ich fürchte, du liest zu langsam aus, sodass dein Eingangsdatenpuffer vorher von neuen Daten überschrieben wird. Falls dies der Fall ist, mach dir eine Parallelschleife, die die Daten einfach nur vom Port wegliest und schreib diese in einen Speicher, aus dem du parallel ausliest und dein StringParsing machst. Dann kann maximal dieser Speicher volllaufen.
Als Speicher eignet sie eine Queue oder im einfacheren ersten Entwurf ein StringControl.
Gruß, Marko
PS: Ich kann deine VIs leider nicht lesen, weil ich momentan nur bis LV 2012 komme.
Ich lade mal mein VI los. Dann kannst du mir mit sicherheit sagen wie ich es aufbauen soll;P.
Ich habe jetzt meine Consumer Producer Struktur eingefügt, aber irgendwie ist es Quatsch, da ich alles im True Case drin habe und True ausgeführt wird, wenn kein Event gedrückt wurde ;p
Das VI habe ich auf deine Labview Version gespeichert.
ich hab´mir dein VI mal angesehen. Da sind mir einige Dinge aufgefallen. Auf unsauberen Programmierstil, wie das Verstecken des Schleifenabbruchanschlusses unter der Casestruktur will ich dabei mal nicht weiter eingehen.
Zum einen hast du eine Programmstruktur verwendet, in der Daten vom Port gelesen werden und danach verarbeitet werden. Erst danach liest du wieder vom Port. Bevor du das tust wartest du aber nochmal 800ms, also fast eine Sekunde. Das heißt, wenn der Sender auf einen Schlag 1000 byte senden würde, würdest du mindestens 8s brauchen, um diese Daten zu verarbeiten, weil du immer nur 100byte liest.
Lies aus der Schnittstelle deine Daten aus und schmeiß sie in eine Datenqueue. Parallel dazu kannst du aus dieser Queue auslesen und deine Verarbeitung machen.
Zum anderen sind da ein paar Umständlichkeiten, wie die Typenumformung eines DBL-Wertes in ein Array, um es in ein anderes Array einzufügen oder die BuildArray-Funktion, um dein aufsteigendes ZahlenArray zu erzeugen. Das ist in deinem Fall sicher nicht problematisch, aber die BuildArray-Funktion muss eben immer neuen Speicher allozieren.
Die Darstellung der Daten im XY-Graph ist sicher auch zu hinterfragen, da du ja jedes Mal alle bisherigen Daten neu aufmalst. Das wäre auch im XY-Graph als Expressgraph umgehbar, aber vielleicht ist ja für deine Appl. auch eher ein Verlaufsdiagramm passender.
(09.06.2015 19:19 )knq schrieb: Ein Beispiel VI oder ein Bild würden mir sicher weiterhelfen.
So, hier dann mal ein Beispiel. Mit dem Schalter write? kannst du einstellen, ob Daten in die Queue geschrieben werden sollen. Ausgelesen wird permanent, allerdings langsamer als geschrieben, was eine langsame Verarbeitungszeit simulieren soll.