PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Serielle Schnittstelle und Leerzeichen



Dirk
02.09.2009, 18:51
Hallo RP6-ler,

ich schicke in einem Programm mit writeChar(ch); einzelne ASCII-Zeichen zum Loader-Terminal, die Zeile beende ich jeweils mit writeChar('\n'); .
Mein Problem ist dabei, dass in der Zeile auch mehrere Leerzeichen nacheinander vorkommen können, die genau so auch ausgegeben werden sollen.
Leider schneidet die serielle Schnittstelle grundsätzlich nach 2 Leerzeichen alle weiteren ab. Ich helfe mir bis jetzt damit, dass ich anstelle von ' ' ein '_' ausgebe.

Kann man das ändern?

2. Frage:
Gibt es auch die Möglichkeit, einzelne Zeichen sofort am Loader-Terminal anzuzeigen und nicht erst etwas zu sehen, wenn das Zeilenende erreicht ist?

Gruß Dirk

Besserwessi
02.09.2009, 19:51
Das wird eine Beschränkung der Terminalsoftware auf der PC seite sein. Da gibt es mehr alternativen. Hyperterm gibt auch mehr als ein Freizeichen aus, und das auch sofort, ohne auf ein CR zu warten.

theborg
02.09.2009, 20:30
du kannst das Lehrzeichen auch als hex angeben des versteht jedes terminal prog. ist eh sinnvoller als ein \n zu senden.

SlyD
03.09.2009, 11:10
Schau Dir mal die Ausgaben vom ERSTEN Beispielprogramm und vom Selbsttest an - jede Menge Leerzeichen hintereinander (schau Dir mal das Menü vom Selbsttestprogramm an... ;) )

Noch ein kleiner schneller Test...
Code:


writeString_P("\n\n _______________________\n");
writeString_P(" \\| RP6 ROBOT SYSTEM |/\n");
writeString_P(" \\_-_-_-_-_-_-_-_-_-_/\n\n");

writeChar(' ');
writeChar(' ');
writeChar(' ');
writeChar(' ');
writeChar(' ');
writeString_P("Test");
writeChar('\n');
writeChar('\n');

writeChar(' ');
writeChar(' ');
writeChar(' ');
writeChar('A');
writeChar(' ');
writeChar(' ');
writeChar(' ');
writeChar(' ');
writeChar(' ');
writeChar('B');
writeChar('C');
writeChar('D');
writeChar('\n');


Ausgabe:


_______________________
\| RP6 ROBOT SYSTEM |/
\_-_-_-_-_-_-_-_-_-_/

Test

A BCD




Also poste mal Deinen Code denn das funktioniert eigentlich alles wunderbar.



Zur 2. Frage:
Das ging früher mal - aber mit einführung der Displays nicht mehr weil hier der empfangene Text überprüft wird um zu schauen ob Daten für die Displays ankommen. Diese Steuercodes dürfen natürlich nicht im Terminal auftauchen und an einzelnen Zeichen kann man das nur schlecht erkennen.

MfG,
SlyD

Dirk
03.09.2009, 19:44
denn das funktioniert eigentlich alles wunderbar
Ups! :-s

Da muss ich wohl noch mal mein Programm checken.

Gruß Dirk

Dirk
04.09.2009, 20:23
@SlyD:
Ja, es lag an mir.

Fehler:
Ich schreibe oft an Progs und Libs auf einem anderen Computer, nehme dann die Teile auf USB-Stick mit und kopiere sie über alte Versionen auf meinem Haupt-PC, an den auch der RP6 angeschlossen ist.

Ich habe also eine neue Lib auch so kopiert, in der keine Begrenzung von Leerzeichen vorkam. Im RP6Lib-Verzeichnis waren aber noch die Dateien "XYZ.lst" und "XYZ.o" der alten Lib-Version. Daher wurde meine neue Lib wohl nicht neu kompiliert und die alte wurde immer eingebunden. In der wurden Leerzeichen noch begrenzt.

So kanns gehen, wenn man nicht aufpasst! :-k

Gruß Dirk