TCP oder VISA lesen - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenkommunikation (/Forum-Datenkommunikation) +---- Thema: TCP oder VISA lesen (/Thread-TCP-oder-VISA-lesen) |
TCP oder VISA lesen - conne - 21.10.2010 13:19 Hallo zusammen, Ich habe ein Problem mit dem Lesen meiner Messdaten. Und zwar werden diese über WLAN (TCP/IP) oder RS232 gelesen. Dazu habe ich jeweil ein Case gemacht, das die Daten in einen String schreibt. Die jeweils neuen Daten werden an den vorigen Datensatz angehängt. Der String-Ausgang aus dem Case wird dazu in der Haupt-Whileschleife in ein Schieberegister gegeben. Wenn ich die Daten auf diese Weise auslese, kommt es nach einiger Zeit (Stunde) zu starken Verzögerungen, und die Prozessorleistung steigt auf irgendwann über 50% an (Vermutlich kommt die Verzögerung durch die hohe Prozessorlast?). Wenn ich die lesen-Funktion, egal ob TCP oder VISA, durch einen Dummie ersetze, der genau dieselben Daten überträgt, liegt die Prozessorleisung insgesamt nur bei 1% und steigt auch nach längerer Zeit nicht an. Ich hab mal zwei Screenshots angeheftet. Eines mit dem TCP Read, und eines mit dem Dummie. Hat einer ne Idee, warum es beim Lesen zu solchen verzögerungen kommt? Achja, nebenbei sei bemerkt, dass die Daten von der Quelle ausreichend schnell übertragen werden. Per Hyperterminal angezeigt ist keine Spur von Verzögerungen. TCP oder VISA lesen - jg - 21.10.2010 19:09 Leerst du den zusammengesetzten String auch irgendwann mal? Oder wird der immer länger und lääänger und lääääänger - braucht also immer mehr und immer meehr und immer meeehr Speicher. Irgendwann ist Schluss, da hat der beste Computer keinen Speicher mehr zur Verfügung. Gruß, Jens TCP oder VISA lesen - conne - 25.10.2010 12:49 Nee, den leere ich nach 4048 Bytes und empfangenem cr/lf. Allerdings gebe ich auch die Verbindungs-ID für TCP und VISA auf ein Schieberegister. Außerdem die ganzen Messdaten. Ich hab das ganze mal etwas zusammengeschoben, damit man die Hauptschleife im Wesentlichen erkennen kann. Die Daten aus der Casestruktur (Ist sonst übersichtlicher). Der aktuell empfangene String wird an den voringen angehängt, und in einer art Terminal dargestellt (liveLOG). Außerdem gehen die Stringdaten unten aus dem Case heraus, und werden angeschließend geparsed und dargestellt. Damit die Anzeigen für die Messwerte zwischendurch nicht auf Null springen, wenn ein Datensatz nicht enthalten ist, gebe ich die Messdaten auch auf ein Schieberegister. Die Schieberegister werden nicht von mir gelöscht. (Ich wüsste auch nicht wie, ohne die Anzeige in Graphen zu verfälschen.) Aber wie gesagt, der untere Teil scheint keine Probleme zu machen, weil ich das Programm ewig laufen lassen kann, wenn in jedem Schleifendurchlauf die Daten aus dem Dummie kommen, statt ausgelesen zu werden. TCP oder VISA lesen - BerndDasBrot - 26.10.2010 09:23 Bist Du sicher, dass es nicht an der Anzeige liegt? Wenn grosse (und wachsende) Datenmengen mit hoher Frequenz ins Diagramm kopiert werden braucht das auch viel Zeit... Gruss, BDB TCP oder VISA lesen - conne - 26.10.2010 13:12 Ist ja keine hohe Frequenz. Die Daten werden mit 1Hz übertragen. Das macht der Dummy ganz genau so. Außerdem hab ich die Anzeigen (sind wirklich sehr viele) auf verschiedenen Registerkarten unter gebracht. Die CPU-Last steigt tatsächlich an, wenn ich eine Seite mit vielen Anzeigen öffne, aber auch, wenn nur der empfangene String angezeigt wird geht die Leistung irgendwann hoch. Kann es mit den Schieberegistern zu tun haben? Aber darin wird doch in dieser konfiguration immer nur der letzte Wert gespeichert, oder? Davon mal ab: Sollte doch mit LV möglich sein, viele Daten in einem Diagramm live darzustellen, oder? Ist das nicht quasi das Steckenpferd von LabVIEW? |