LabVIEWForum.de
Probleme mit UART (serielle Kommunikation) - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: Probleme mit UART (serielle Kommunikation) (/Thread-Probleme-mit-UART-serielle-Kommunikation)

Seiten: 1 2


Probleme mit UART (serielle Kommunikation) - Nobody - 28.07.2011 09:34

Hallo,

ich habe einen Atmega über einen FTDI (USB-Seriell-Wandler) zur Kommunikation mit dem PC ausgerüstet, damit habe ich unter Windows XP einen Virtuellen Com-Port. Nun gibt er mit je nachdem, welchen Befehl ich ihm schicke seine Antwort zurück. So kann ich ihm folgenden String schicken:

Von mir: 1_1_1 und er gibt mir den entsprechnenden Messwert als Ascii zurück. Zum Beispiel 4111.

Das funktioniert auch mit einem Terminalprogramm super. Allerdings macht Labview es nur manchmal, es klappt nur ungefähr jedes 4te mal.

Folgende Szenarien:

- Es klappt
- Er gibt nichts aus und der Timeout von 10s meldet einen Fehler
- Der Timeout meldet einen Fehler und er gibt den richtigen Wert aus?!

Nun beruht mein Test auf dem basic serial write and read Beispiel von hier (NI).

Ich habe auch schon eine kleine Zeitverzögerung eingebaut, da mein Controller ein paar µs zur Bearbeitung benötigt.
Aber ohne Erfolg. Komisch ist halt nur, dass es manchmal geht.

Hatte jemand schon ähnliches, kennt den Fehler oder kann mir einen anderen Weg erklären?

Achja, habe es mit LabVIEW 2009 und 2010 getestet, gleiches Verhalten

Vielen Dank


RE: Probleme mit UART (serielle Kommunikation) - Y-P - 28.07.2011 09:44

Hast Du die richtigen Terminierungszeichen, die richtige Baudrate, Handshaking (falls vorhanden),.... eingestellt?
Wenn ja, dann lad' doch mal Dein VI hoch.

Gruß Markus


RE: Probleme mit UART (serielle Kommunikation) - Nobody - 28.07.2011 09:58

Nee, das ist alles korrekt eingestellt (geht beim Terminalprogramm ja auch)
9600baud, 8 Data, 1 Stop und no parity

Wobei er das Abschlusszeichen nicht richtig nimmt, mein Atmega reagiert auf (\n), allerdings gibt es mit dem automatischen von Labview Probleme, daher schicke ich hinter meinem Befehl noch \n manuell mit, so geht es dann.

Datei im Anhang (stammt von NI)


RE: Probleme mit UART (serielle Kommunikation) - Y-P - 28.07.2011 10:04

Das Abschlusszeichen gilt auch nur für's Lesen. Das steht in der Hilfe zu dem VI (VISA Configure Serial Port). Darum musst Du das auch noch mit anhängen.

Gruß Markus

EDIT: Wo ist eigentlich Deine Schleife um das VISA Write und VISA Read? So wie es jetzt ist, läuft Dein Programm nur einmal.


RE: Probleme mit UART (serielle Kommunikation) - Nobody - 28.07.2011 10:20

Okay, dass wusste ich nicht, Danke...

Nun geht es genau jedes 2te Mal, also erst Fehler dank Zeitüberschreitung und danach alles so wie es soll und wieder Zeitüberschreitung.

Ich will es erstmal nur einmal schicke und einmal empfangen, so soll es später auch im Programm ablaufen, ein Behehl soll geschcitk werden und dann soll der Messwert verarbeitet werden. Daher noch keine Schleife.


_____________________________________________________________
Anderer Weg:
Nun habe ich es nochmal mit der ExpressVI (Assistent für Instrument I/O) getestet. Dabei ist es jedesmal gleich. Er gibt ein Nachrichtenfenster, in dem nur Error steht. Nach dem Wegklicken gibt er aber trotzdem den richtigen Messwert aus -.-

Kann es sein, das er noch irgendwas bestimmtes haben möchte, damit das Lesen für ihn erfolgreich ist?


RE: Probleme mit UART (serielle Kommunikation) - Y-P - 28.07.2011 10:24

Hat die Antwort, die Du von Deinem Gerät kriegst, auch \n als Terminierungszeichen? Oder erwartet das Gerät nur \n bei der Ansteuerung?

Gruß Markus


RE: Probleme mit UART (serielle Kommunikation) - Nobody - 28.07.2011 10:32

Vorher brauchte das Gerät nur \n als Abschluss, damit er merkt, wann der Strings vorbei ist. Nun schickt er aber auch hinter dem gesendeten String ein "\n" mit, habe es eben nachgerüstet, aber immernoch das obige Verhalten.


RE: Probleme mit UART (serielle Kommunikation) - Y-P - 28.07.2011 10:38

Schickt Dein Gerät mehr als 5 Byte? Mach' bei "Bytes to Read" mal den Wert größer, bzw. schließe gleich "Bytes at port" (per "PropertyNode") an?

Gruß Markus


RE: Probleme mit UART (serielle Kommunikation) - Nobody - 28.07.2011 10:56

das habe ich auch probiert, sind zu wenig angegeben, liesst er halt nur die entsprechenden Buchstaben

nun habe ich mal das etwas komplexere Beispiel aus der Hilfe (Advanced serial write and read) genommen, damit funktioniert es, wenn ich bei read und write jeweils end with termination character angebe. Hängt also wohl irgendwie mit dem \n zusammen.
Jedenfalls werde ich den Advanced Code nun mal ein bisschen verkleinern und vereinfachen.


RE: Probleme mit UART (serielle Kommunikation) - Y-P - 28.07.2011 11:53

Hast Du etwa in Deinem String bei "Normal Display" das \n eingetragen?
Du musst den String vorher auf "Codes Display" umstellen.

Gruß Markus