Antworten

Der Beitrag verursachte die folgenden Fehler, die behoben werden müssen:
Achtung: In diesem Thema wurde seit 120 Tagen nichts mehr geschrieben.
Wenn Sie nicht absolut sicher sind, dass Sie hier antworten möchten, starten Sie ein neues Thema.
Einschränkungen: 8 pro Beitrag (8 verbleibend), maximale Gesamtgröße 8,79 MB, maximale Individualgröße 1 MB
Entfernen Sie den Haken der Dateianhänge, die gelöscht werden sollen
Klicken Sie hier oder ziehen Sie Dateien hierher, um sie anzuhängen.
Anhänge und andere Optionen
Verifizierung:
Bitte lassen Sie dieses Feld leer:
Geben Sie die Buchstaben aus dem Bild ein
Buchstaben anhören / Neues Bild laden

Geben Sie die Buchstaben aus dem Bild ein:

Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau

Zusammenfassung

Autor pic18
 - 10.07.2022, 21:11:45 CEST
ich hatte einen Fehler gemacht, ich hatte '/' mit '\' vertauscht. '\r' ist also nur ein Zeichen und gibt 0x0d, also CR zurück.
Autor pic18
 - 07.07.2022, 22:45:55 CEST
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.
Autor pic18
 - 02.07.2022, 00:30:24 CEST
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;
}