Strategie Displayansteuerug Textmode

OP #1282353
Hallo,

bei der Programmerstellung für Benedikts Display gibt es noch so einige 
offene Fragen, machbar ist vieles, nur was ist sinnvoll?

Ich möchte gern scrollenden Text haben wie auf dem PC, des weiteren soll 
so wenig rechenzeit wie möglich entstehen, d.h. wiederkehrende Aufgaben 
sollen nur dann erledigt werden wenn etwas zu tun ist.

Vorstellung:

char Buffer[40][20]

beeinhaltet meinen internen Zeichenpuffer.

Direktadressierung ohne Scrollen

sprintf(Buffer[zeile++][spalte},"......
sprintf(Buffer[zeile++][spalte},"......
sprintf(Buffer[zeile++][spalte},"......
...
Display_Write();

schreibe ich da rein, meist wird spalte = 0 sein aber vielleicht nicht 
immer, wenn ich Texte in zwei Spalten haben will.

Die Routine Display_Write(), soll folgendes machen:

Über jede Zeile wird eine Checksumme erzeugt, ob diese sich verändert 
hat. Sie sucht auch die \0 Marke des Stringendes und erzeugt Spaces ab 
dort bis Zeile voll ist, damit keine Reste stehen bleiben, wenn ein 
String kürzer ist als der vorhergehende. Es werden nur diejenigen ganzen 
Zeilen komplett ans Display übertragen, die sich geändert haben.

Scrollfunktion

sprintf(ScrollBuffer,"Text 1......"); Display_Scroll(ScrollBuffer);
sprintf(ScrollBuffer,"Text 2......"); Display_Scroll(ScrollBuffer);
usw.

schreibt stur Zeilen in die Matrix rein und wenn diese voll ist, wird 
jede Zeile eines nach oben kopiert und das Bild neu aufgebaut. sprintf 
nehme ich auch nur, weil mir diese den ganzen String erzeugt wie er 
gedruckt werden soll.

Das Ganze läuft derzeit ohne ISR. Per ISR läuft nur das Abarbeiten des 
Uart Fifo, wenn dieser vollegschrieben wurde.

Ist das gangbar oder gibt es noch pfiffigere Lösungen?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.