LabVIEWForum.de
Messdaten seriell einlesen, verarbeiten und speichern - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA)
+---- Thema: Messdaten seriell einlesen, verarbeiten und speichern (/Thread-Messdaten-seriell-einlesen-verarbeiten-und-speichern)



Messdaten seriell einlesen, verarbeiten und speichern - Ma--Mut - 24.07.2009 06:50

Guten Morgen,

ich möchte Daten über die serielle Schnittstelle (Rs232) einlesen, diese verarbeiten und anschließen in ein Textfile abspeichern.
Die Daten kommen in dem Format an: 123,321_456,654

T-Daten:
I/O: COM3
Baud rate: 115200
Data bits: 8
Stop bit: 1
Input buffer size: 4096


Folgende Probleme habe ich:
1. Erster Programmstart geht nicht immer, erst nach ein paar Versuchen. Fehlermeldung die dabei auftritt ist irgendwas mit Speicherüberlauf. Wenn das Programm einmal läuft und man es beendet kann man es so gut wie ohne Probleme wieder starten.
2. Programm bringt nach einigen Stunden Laufzeit die Fehlermeldung: "VISA: (Hex 0xBFFF006C) Während der Übertragung ist ein Überlauffehler aufgetreten. Ein Zeichen wurde von der Hardware nicht gelesen, bevor das nächste Zeichen ankam."
2. Zu jedem Wert möchte ich eine Differenzzeit ausgeben, die sich eigentlich unterscheiden müsste, es nach dem Textfile aber nicht tut.

Könnt ihr mir bei meinen Problemen helfen?

Grüße
Ma--Mut

Folgendes Programm habe ich hierfür erstellt:
[attachment=19931]
und das Textfile wird damit erzeugt:
[attachment=19932]


Messdaten seriell einlesen, verarbeiten und speichern - jg - 24.07.2009 10:14

Deine Infos sind etwas unvollständig.

Dein VI enthält nur VISA-Read, irgendeine Gegenstelle (welche?) muss also was senden. Sendet die immer, auch wenn dein Programm nicht läuft? Dann ist wahrscheinlich der Serial-Buffer schon voll, wenn du dein Programm schon startest, deshalb Speicherüberlauf. Vielleicht hilft es, nach Configure Serial Port erst einmal den Puffer zu leeren.

Wenn dein Programm dann später Speicherüberlauf anzeigt, dann liest du offenbar nicht schnell genug die Daten ein, die an der seriellen Schnittstelle anliegen. Lass dir doch die Bytes am seriellen Buffer zwecks Debugging am FP anzeigen:
[attachment=19940]

Gruß, Jens


Messdaten seriell einlesen, verarbeiten und speichern - Ma--Mut - 24.07.2009 12:21

Ich gebe über einen µController seriell meine Daten aus.
Habe mein Code jetzt so geändert, dass ich in LV eine 1 an den µC senden muss und er mir erst darauf hin die Daten sendet. --> Rahmensynchronisationsfehler tritt nicht mehr auf!

Allgemein habe ich eben mal die Festplatte bereinigt, da nur 200 Mb noch frei waren. Jetzt läuft das VI mit deutlich weniger Prozessorauslastung und anscheinend stabiler.

Leider habe ich noch immer das Problem, dass sich die Zeitwerte (Differenzzeit im Textfile) sich nicht schnell genug ändern, um jedem Messwert eine eindeutige Zeit zuzuordnen.
Habt ihr eine Idee woran das liegt?

Füge eben mein VI (für LV Version 8.6) :lv86noch mal in der geänderten Version an, vllt habt ihr noch Optimierungsvorschläge - egal in welche Richtung.
[attachment=19952]

Ich gebe mir auch die Byteanzahl im FP aus, einmal vor und nach Visa read.
Bytes to read: 52
Actual bytes read: 17
Nach Visa read: 35

Grüße und Danke
Ma--Mut