Hallo, ich möchte die Ausgabe mit der Funktion printOut auf meine LCD-Anzeige umleiten. fct = &LCDOut;
Nun habe ich eine Frage zu den Steuerzeichen: "/r/n"
/r steht für carriage return
/n steht für line feed
soweit habe ich das verstanden.
meine Frage ersetzt der Compiler /r als ein Zeichen also als ASCII Zeichen 13 oder sind es zwei Zeichen also '/' und 'r'
wenn es ein Zeichen ist, so könnte ich dann schreiben
printOut('/r')
bei zwei Zeichen muß es heißen
printOut("/r")
ich benutze den alten C18 Compiler von Microchip
int printOut(const rom char *f, ...) {
va_list ap;
int n;
put_t fct;
va_start( ap, f );
#if TELNETD_SUPPORT == 1 && USB_SUPPORT == 1
fct = (stdOut == source_usb) ? &transmitUSB : &telnetSendChar;
#elif TELNETD_SUPPORT == 1
fct = &telnetSendChar;
#else
fct = &transmitUSB;
#endif
n = _print( fct, f, ap );
va_end( ap );
return n;
}
ich habe mal die Umleitung auf die LCD-Anzeige gemacht.
uint8_t testvar[]="Test";
printOut("%s/r/n",testvar);
Da gibt er die Zeichen "/n" als zwei Zeichen aus. Auf der Anzeige steht:
Test/n/r
void menu_auswerten(void){
uint8_t i;
uint8_t testvar[]="Test/n/r";
//value_ausw_laeuft=1;
writeLCDCmd(LCD_CLEARDISPLAY);
writeLCDRomString(menu_txt[ausw_aktuell]);
switch (ausw_aktuell) {
case test:
lcd_neu=1; LCD_ausw();
LCD_clrhome;
stdOut = source_lcd;
printOut("%s/r/n",testvar);
lcd_neu=0; LCD_ausw();
break;
Übrigens, ich kann mit entspr. Kürzel auch Hexadezimal Zahlen und Fließkommazahlen darstellen. Somit kann ich auch ganz einfach rechnen.
ich hatte einen Fehler gemacht, ich hatte '/' mit '\' vertauscht. '\r' ist also nur ein Zeichen und gibt 0x0d, also CR zurück.