28.03.2007, 20:53
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
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