Probleme beim Auslesen RS232 - 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: Probleme beim Auslesen RS232 (/Thread-Probleme-beim-Auslesen-RS232) Seiten: 1 2 |
Probleme beim Auslesen RS232 - Guest - 15.02.2010 13:13 Hallo, Ich habe ein etwas merkwürdiges Problem: Ich lese NMEA-Daten aus einer Seriellen Schnittstelle aus. Diese werden nach der Vorgabe mit CR+LF abgeschlossen. Wenn ich nun die Daten per Schieberegister nacheinander verknüpfe, wird alles korrekt angezeigt. (Bild 1, live LOG in Bild 3) Die Daten werden gleichzeitig in eine Datei mitgeloggt, und da fängt der Ärger dann an: Wie in Bild 2 zu sehen ist, fehlen da Teile. Vom Sender wird immer abwechselnd VTG und GGA gesendet. Komischerweise tritt der Fehler nur bei der Meldung für VTG auf. In Bild 3 ist dann der Funktionsteil zu sehen. Ich habe TerminalChar gesetzt, und der Puffer ist auch mehr als großzügig ausgelegt. Eine NMEA-Meldung ist pro Satz auf 77 Bytes begrenzt, soweit ich weiß. Die Frage ist also: Warum wird im Register alles korrekt gespeichert, aber nicht in der Datei? Außerdem werden die Meldungen auch noch weiterverarbeitet, auch da kommen für VTG unvollständige Datensätze an, allerdings fehlt da nicht, wie in der LOG Datei der Anfang von VTG, sondern die Kette bricht vor dem Abschlusszeichen ab. Hat jemand eine Idee dazu? Probleme beim Auslesen RS232 - Guest - 15.02.2010 14:43 Achso, da hab ich mich geirrt: Der Fehler tritt bei GGA auf, nicht bei VTG Probleme beim Auslesen RS232 - IchSelbst - 15.02.2010 18:59 ' schrieb:Die Frage ist also: Warum wird im Register alles korrekt gespeichert, aber nicht in der Datei?Wenn im Schieberegister (also in der Anzeige am FP) alles richtig drinnen steht, tippe ich auf ein Timingproblem. Dem Schieberegister, respektive der Operation "Array erstellen" ist es egal, in welchem zeitlichen Abstand einzelne Datenpakete kommen. Auch ist es hier egal, ob ein Datenpaket eigentlich unvollständig ist. Das, was zur Vollständigkeit fehlt, wird halt als nächstes Datenpaket gelesen. Möglicherweise bringt das VISA-Read-Element einen Fehler. Daher wird die Schreiboperation, die mit diesem Fehler sequenziert wird, nicht durchgeführt. Ein "halbes" Datenpaket wird auch von der nachfolgenden Berechnung "falsch" interpretiert. Du müsstest also mal verifizieren, ob der lange (!) String nicht in zwei Teilen eingelesen wird. Probleme beim Auslesen RS232 - Guest - 16.02.2010 11:33 Wunderbar. Ich hab wohl zu voreilig den Fehlercluster außen vor gelassen. Das hat man davon. Tatsächlich stellte sich heraus, dass ich mit 100ms Timeout bei der VISA Konfiguration die Übertragungsdauer des langen Strings unterschritten hatte. Nun klappt alles, danke! Probleme beim Auslesen RS232 - Homer82 - 03.03.2010 15:43 Hallo, ich nutze das "Advanced Serial Write and Read" zum auslesen einer RS232 Schnittstelle. Der Sender beendet einen Datensatz mit CRLF. Die Daten sehe ich dann im Textfeld. Soweit so gut. Sendet der Sender :huh:zwei Datensätze, schickt er schnell "Datensatz1 CRLF" und "Datensatz2 CRLF" hintereinander (siehe Bild "Terminal", dann 40 Sekunden Pause bis zum nächsten senden). Bei diesem schnellen hintereinander Übertragen scheint der Fehler zu liegen, weil auf dem Bildschirm nichts ankommt und Fehlermeldungen kommen. Wie programmiere ich LabVIEW, dass ich beide Datensätze sehe? Probleme beim Auslesen RS232 - IchSelbst - 03.03.2010 18:41 ' schrieb:Fehlermeldungen kommen.Wie heißt denn der Fehler? Zitat:Wie programmiere ich LabVIEW, dass ich beide Datensätze sehe?Naja, musst du halt mal das Programmieren anfangen. Mach ein Schieberegister, das alle empfangenen Daten enthält. Neue Daten addierst du immer zu denen im Schieberegister. Den Wert im Schieberegister gibt du dann auf das Anzeigeelement. Probleme beim Auslesen RS232 - Homer82 - 04.03.2010 14:49 Danke, mit dem Schieberegister funktioniert soweit Probleme beim Auslesen RS232 - Homer82 - 05.03.2010 17:06 Hallo, mein VI liest Werte über das VISA aus und trennt sie nach A und B "Search/Split String". Am Anfang sendet das Messgerät aber einen Kopf mit Einstellungen, den ich auch haben will. Ich habe ein Array erstellt, dass aus dem Schieberegister alles bekommt was nicht A und B ist. (Der Kopf hat knapp 30 Daten, die später im Frontpanel stehen sollen bleiben). Das Problem ist, die 30 Daten (jetzt noch 5) werden aus dem Array wieder rausgeschoben, durch nachfolgende Daten. Wie bekommt man das hin, dass quasi von "Device" bis "DATA" alles ausgegeben wird und nicht wieder verdrängt wird? Mit einer For Schleife um das Array hats nicht funktioniert. Außerdem find ichs blöd 30 mal "Match Regular Expression " zu schreiben. Danke und Grüße LV 8.2 Probleme beim Auslesen RS232 - GerdW - 05.03.2010 17:26 Hallo Homer, ich würd's so machen: - alles, was bis DATA kommt, in einen Stringindicator schieben - alles, was danach kommt, zeilenweise auftrennen (z.B. mit SpreadsheetStringToArray und LF als Trennzeichen). Dann kannst du ganz einfach das erste Zeichen der Zeile auswerten und die Daten dann zuordnen. Momentan überschreibst du halt immer wieder dein Array. Vielleicht wäre dir schon damit geholfen, wenn du ein weiteres Shiftregister nimmst, um die aktuellen Werte an die vorhandenen anhängen zu können? Probleme beim Auslesen RS232 - Homer82 - 05.03.2010 18:11 Danke für die schnelle Antwort, ich werd mich Montag:Dan die Arbeit machen |