LabVIEWForum.de - VISA RS232 mit µC (Anfänger)

LabVIEWForum.de

Normale Version: VISA RS232 mit µC (Anfänger)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
ich bin jetzt seit knapp einer Woche dabei, die Programmiersprache G zu erlernen und will eine Kommunikation zwischen LabView und einem µC herstellen.
Dank des Forums bin ich recht schnell in das Thema eingestiegen, dennoch steh ich im Moment vor einem Problem(chen)

Als Grundlage habe ich mir das "Basic Serial Write and Read.vi" angeschaut und angepasst. LabView 9.0.1!

µC: Wird an den µC ein bestimmtes Zeichen gesendet, antwortet dieser mit einem Wert aus dem A/D Wandler. (getestet mit Hyperterm -> funktioniert einwandfrei)
Das ganze findet in einer While Schleife statt, d.h. der µC antwortet immer wenn der entsprechende String gesendet wurde.

Einstellungen: Baudrate 38400, Stopbit 1, Parität 0, Datenbits 8!

Diese Einstellungen habe ich auch in meiner VISA Initialisierung übernommen. Ein Write und Read in LabView ist auch möglich (was ja schonmal auf eine korrekte Kommunikation deutet).

Mein Problem ist nur, das die Read-Funktion zufällig den gewünschten Messwert liefert, bspw. erst beim 7ten aufruf oder auch mal garnicht.

Ich denke das ist ein Takt bzw. Zeitproblem zwischen Sendevorgang des µC und Lesevorgang von Labview...Habt ihr eine Idee wie ich dem entgegenwirken kann?

Einfügen von delays? oder kann man den VISA READ Baustein konstant abfragen?!


Vielen Dank schonmal im Vorraus!
Hallo Red,

du solltest dem µC schon etwas Zeit geben zum Antworten...

Üblicherweise fragt man eine bestimmte Anzahl Zeichen vom seriellen Port ab oder man hat eine Kommunikation mit einem bekannten "termination char". Wie gehst du vor?


Außerdem ist es immer hilfreich, sein VI anzuhängen. Ein Bild sagt mehr als 1000 Worte!
Hallo Gerd, danke schon mal für die rasche Antwort!

vor dem Senden des µC findet ein delay von 500ms statt.

Zitat:Üblicherweise fragt man eine bestimmte Anzahl Zeichen vom seriellen Port ab oder man hat eine Kommunikation mit einem bekannten "termination char". Wie gehst du vor?

Ich Frage keines der beiden Möglichkeiten ab Cool, wie gesagt, habe ich lediglich die Basic Read and Write verwendet. (siehe Anhang, LabView 9.0.1)

Mein µC sendet: Messwert1: Integerwert rn -> heißt das, das ich in Labview als Termination Char eine 0xA abfragen kann?!

Gruß

Lv09_img2
Ich bin jetzt hingegangen, und habe das TermChar (0xA) abgefragt und die Anzahl der Bytes (17) aber es tut sich nix!
Wo könnte denn noch mein Fehler liegen? Sendet der µC zu zeiten in denen ich den Read Befehl nicht ausführe?! gibt es keine Möglichkeit das ganze zu Synchronisieren?

im Anhang das neue VI [LabView2009]

Gruß Red
So könnte es funktioieren - vorausgesetzt der µC antwortet. (Wenn nicht, Timeaoutfehler)
Lv09_img2[attachment=28057]
Du hast bereits die idealstmögliche aller Synchronisationen:
1.) Master-Slave-Modus: µC sendet nur, wenn er gefragt wird.
2.) Abschluß mit TermEnd. Der PC merkt, wenn der µC fertig ist mit Senden und er die vollständige µC-Antwort aus dem Empfangspuffer holen kann.
Du solltest den µC aber nicht mit millionenfach mit Maximalgeschwindigkeit mit der immer gleich Frage bombardieren, sondern nur wenn etwas Neues gefragt werden soll. Die "Anzahl Bytes" bei TermEnd-Aktivierung sollte größer als die maximal Antwortlänge sein.
Wenn es nicht funktioniert: Vielleicht erwartet der µC auch ein Abschlußzeichen bei der Anfrage! Wenn Du Beim Eingeben des Strings mit Return abschließt, darfst Du daraus nicht schließen, daß das Return auch im String enthalten ist!
mit den Abschlusszeichen funktioniert es irgendwie nicht...

ich habe jetzt mal wieder das Anfangsbeispiel genommen (Basic Serial Write and Read.vi aus der Hilfe)...mit den richtigen Paramtereinstellungen funktioniert die Kommunikation auch, genau 1 Mal!

Trenne ich danach die Verbindung µC -> PC und Verbinde dann wieder, funktioniert es wieder 1 Mal

Kann es, das mein VISA Close nicht nur die Verbindung trennt, sonder auch deaktiviert bis der µC wieder neu angeschlossen wird?

Gruß
@Lucki -> dein File läuft jetzt auch! Ich musste '' Codes Display des Eingabestrings aktivieren!

Jetzt muss ich nur noch rausfinden, wie man mehrere Eingaben nacheinander machen kann, ohne das die Schnittstelle geschlossen wird!
' schrieb:Jetzt muss ich nur noch rausfinden, wie man mehrere Eingaben nacheinander machen kann, ohne das die Schnittstelle geschlossen wird!
Das verstehe einer: Was Du herauzufinden gedenkst, ist mit dem geposteten Beispiel bereits möglich. Die COM-Schnittstelle wird einmal initialisiert, und bei Stop des Programms wird sie geschlossen. Dazwischendurch kanns Du Eingaben machen und die Antworten abhören so oft Du willst.
Referenz-URLs