Forum: Mikrocontroller und Digitale Elektronik Kommunikation RS232 Mikrocontroller


von Mµcro (Gast)


Lesenswert?

Hallo,

ich habe einen ATmega1284P und habe eine Kommunikation mit UART 
programmiert über eine RS232 Schnitstelle und LabVIEW. Das 
Betriebssystem ist Win 7 Professional.
Die Kommunikation mit dem Mikrocontroller und einem Terminal 
funktioniert reibungslos.
Sobald ich jedoch Befehle in LabVIEW eingebe und abschicke, reagiert er 
erst nachdem wirklich 40 Zeichen geschickt worden sind, "\r\n" haben 
keine Wirkung.
Woran könnte das liegen?

von Peter II (Gast)


Lesenswert?

an der Software im µc

von André R. (andr_r23)


Lesenswert?

Er hat ja geschrieben, dass es mit dem Terminal ganz normal 
funktioniert. Was hat das also mit der Software im uC zu tun?

von Karl H. (kbuchegg)


Lesenswert?

> "\r\n" haben keine Wirkung.
> Woran könnte das liegen?

Du gibst jetzt aber nicht im Labview \r\n ein. Oder doch?

von Mµcro (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
>> "\r\n" haben keine Wirkung.
>> Woran könnte das liegen?
>
> Du gibst jetzt aber nicht im Labview \r\n ein. Oder doch?

Ja, ich habe gedacht das diese Zeichenfolge den Befehl im 
Mikrocontroller abschließt.

von Mµcro (Gast)


Lesenswert?

Was ich in das Senden Feld in LW eingebe sieht folgendermaßen aus:

getvalue00000000000000000000000000000000

danach erhalte ich einen Spannungswert zurück.

mit

getvalue\r\n

reagiert er nicht. Er reagiert erst nachdem 40 geschickt worden sind.

von gordon (Gast)


Lesenswert?

\r\n ist nur eine Darstellung für die Zeichen 13 und 10. Carriage Return 
und Line Feed

von Uwe (Gast)


Lesenswert?

> Ja, ich habe gedacht das diese Zeichenfolge den Befehl im
> Mikrocontroller abschließt.

Der ist gut ! Ne mal ernst das sind steuercodes in C auch Escape-Sequenz 
gennant.
http://de.wikipedia.org/wiki/Escape-Sequenz

von Mµcro (Gast)


Lesenswert?

Hat jemand einen Vorschlag wie man diesen Befehl in LabVIEW generieren 
könnte?
Ich bin LabVIEW Anfänger.

von Peter II (Gast)


Lesenswert?

André R. schrieb:
> Er hat ja geschrieben, dass es mit dem Terminal ganz normal
> funktioniert. Was hat das also mit der Software im uC zu tun?

sie sendet nichts, also liegt es an der Software.

von André R. (andr_r23)


Lesenswert?

Scheinbar antwortet die Software bei allem was er über das Terminal 
schickt. Nur übre Labview antwortet er nicht. Ich begreif immer noch 
nicht was es mit der Software zu tun hat. UART bleibt UART und wenn UART 
funktioniert funktionierts auch. Die Frage ist hier wohl eher wie man 
Labview sagen kann, dass ein CR und LF mitgesendet wird und wie man das 
macht.

von Peter II (Gast)


Lesenswert?

André R. schrieb:
> Ich begreif immer noch
> nicht was es mit der Software zu tun hat.

man kann in die software programmieren das sie auch auf die 2 zeichen 
"\n" reagiert, dann würde es auch so gehen.

von André R. (andr_r23)


Lesenswert?

Klar würde es dann gehen er kann auch hingehen und das ding so 
programmieren das ein beliebiges zeichen das ende des Strings darstellt. 
Aber die Software scheint ja auf das CR/LF zu warten und da muss es doch 
eine Lösung geben wie Labview den String von sich aus schon abschliesst. 
Schliesslich soll Software auch so programmiert sein, dass sie überall 
funktioniert. Und der Nutzer soll sich auch nicht noch einarbeiten in 
das System und Befehle lernen.

von Karl H. (kbuchegg)


Lesenswert?

Mµcro schrieb:
> Hat jemand einen Vorschlag wie man diesen Befehl in LabVIEW generieren
> könnte?
> Ich bin LabVIEW Anfänger.

Kann ja durchaus sein, dass das in LABVIEW mit genau der gleichen 
Schreibweise gemacht wird.

Die Tatsache, dass du Anfänger bist, entbindet dich nicht davon, dass DU 
die LABVIEW Doku lesen musst.

von Udo S. (urschmitt)


Lesenswert?

Ohne mit Labview gearbeitet zu haben.
Wenn du was ins Terminal eingibst wird jedes Zeichen entweder sofort 
gesendet oder spätestens wenn du Enter drückst.
In Lab View wird das Kommando nichte gesendet werden wenn du die beiden 
MetaZeichen \r\n eingibst.
Prüfe doch einfach wann wirklich Daten über die Schnittstelle gehen, ich 
wette daß die erst nach dem kommpletten Kommando von Labview gesendet 
werden.

von Stefan P. (poge-st)


Lesenswert?

Hallo,

Das ist in LabVIEW ganz einfach, du darfst in deinen String nicht \r\n 
schreiben, denn für \r und \n gibt es eigene Konstanten in der String 
Palette.

Alles was du nun machen musst, ist den String den du schicken willst mit 
deinen Konstanten zusammenzufügen. Wenn du es nicht findest, kann ich 
dir auch eine VI schicken, aber leider erst Abends, jetzt habe ich kein 
LabVIEW zur hand.

Das sollte dein Problem lösen ;)

Viel Spaß

von peter (Gast)


Lesenswert?

es gibt in labview konstanten für CR und LF...

Programmierung -> String -> Ganz unten (Zeilenvorschub, Wagenrücklauf 
und beides kombiniert)

von Mµcro (Gast)


Lesenswert?

habs hingekriegt :D
Einfach Rechtsklick aufs Eingabefeld->" '\'-Code- Anzeige " auswählen.

Dann funktioniert auch getv\r\n

Vielen Dank euch allen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.