LabVIEWForum.de - return = \r in LabVIEW?

LabVIEWForum.de

Normale Version: return = \r in LabVIEW?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo ich hatte/habe folgendes Problem:
Ich möchte Programmcode zur Ansteuerung eines Schrittmotors an die serielle Schnittstelle senden. Die Steuerung des Schrittmotors verlangt dafür an jedem Zeilenende ein Return, = einen Zeilenrücklauf ohne Wechsel zur nächsten Zeile (quasi cursor wieder ganz nach links aber nicht nach unten). Daraus ergibt sich beispielsweise folgender Programmcode:
@0i r 71 r9 r @0s (Die Leerzeichen gibts in Wirklichkeit nicht die sind hier nur zur Lesbarkeit, das r steht für return)
Nun gibt es folgenden Widerspruch:
Zuerst setze ich den oben beschriebenen Programmcode aus verschiedenen strings und arrays zusammen (mittels selbstgeschriebenem sub-vi).
dann:
Variante a: Ich kopiere das Ergebnis welches ich von dem sub-vi erhalte per hand (strg+c und strg+v) in eine Stringeingabebox und schicke das ganze an den Com-Port --> funktioniert prima

Variante b: Ich verbinde das sub-vi direkt mit der box welche den string über den Com-port sendet: -> ich erhalte von der Steuerung als Handshake die Fehlermeldung das mein letztes Zeichen falsch sei, damit meint er sicher das erste r

Variante c: Ich ersetze beim Zusammensetzen des Programmcodes im Subvi das r durch das String-zeichen welches aussieht wie die Enter-taste der Tastatur. Eigentlich dürfte das nur für einen Zeilenrücklauf sorgen, hat aber in der Ausgabe erstmal den gleichen Effekt wie carriage return, also zeilenrücklauf + wechsel zur nächsten zeile, wovon ich dachte das sei rn. Den dabei entstandenen String sende ich direkt an den Com-port -> funktioniert prima. Wenn ich mir den an den com-port gesendeten string jedoch anzeigen lasse, schreibt die Anzeigebox ein r an die Stelle der betreffenden Zeichen.

Fazit: Ich habe zwar mit Variante c eine Lösung meines Problems gefunden, weiß jedoch nach wie vor nicht was nun der Unterschied zwischen b und c ist und wie LabVIEW ein Return bzw. Carriage Return handhabt
Eigentlich genauso wie sonst:

r = <cr> = return (carriage return)
n = <lf> = new line (line feed)


Galube ich mal.

Eugen
so dachte ich das ja auch aber meinem oben geschilderten problem nach ist r nicht gleich r.
= Das Stringzeichen welches man in Matlab für return benutzen kann erzeugt zwar graphisch angezeigt ein r, hat jedoch nicht den gleichen Effekt wie ein als String eingegebenes r
Hallo macoio,

schau Dir das mal aus der LV-Hilfe an.

Gruß,
Marko
Hi,

evtl. hat es damit zu tun, dass du deine "manuellen" Eingaben im String-Feld nicht im "codes display" gemacht hast!? Mach mal nen Rechtsklick auf ein String-Control und schalte von "normal" auf "codes" um...CRLF u.ä. sind ja Steuerzeichen, wenn man die direkt in ein Stringfeld im "Normalmodus" eingibt bedeutet dass was anderes als wenn man die im Codes-Modus eingibt!

Guck mal hier:

[attachment=5188]

Manchen Programmen reicht auch ein CR, die interpretieren dass dann wie CRLF. Das stammt ja noch aus Schreibmaschinenzeiten, da mussten zwei mechanische Vorgänge stattfinden um an den Zeilenanfang zu kommen (CR+LF). Heute ist das ja nur noch ein Befehl, da reicht oft wenn man nur eines der Zeichen angibt.

Gruss
Achim
' schrieb:Hi,

evtl. hat es damit zu tun, dass du deine "manuellen" Eingaben im String-Feld nicht im "codes display" gemacht hast!? Mach mal nen Rechtsklick auf ein String-Control und schalte von "normal" auf "codes" um...CRLF u.ä. sind ja Steuerzeichen, wenn man die direkt in ein Stringfeld im "Normalmodus" eingibt bedeutet dass was anderes als wenn man die im Codes-Modus eingibt!

Guck mal hier:

[attachment=32459:cr.vi]

Manchen Programmen reicht auch ein CR, die interpretieren dass dann wie CRLF. Das stammt ja noch aus Schreibmaschinenzeiten, da mussten zwei mechanische Vorgänge stattfinden um an den Zeilenanfang zu kommen (CR+LF). Heute ist das ja nur noch ein Befehl, da reicht oft wenn man nur eines der Zeichen angibt.

Gruss
Achim


ok, andersrumSmile. Ich habe meine manuellen Eingaben im "codes display"-modus gemacht, deshalb hat er das per hand getippte r erkannt und alles hat funktioniert. Als ich jedoch meinen zusammengesetzten String an den PortSendeBlock angeknüpft habe war ich nicht im "codes display"-modus (wie transformiert man einen fertigen String dahin?) und deshalb ging das nicht. Deine Datei kann ich mir erst später anschaun hab hier grad kein LabVIEW.
Referenz-URLs