mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik printf verbiegen auf Port


Autor: Klaus...(Norad) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo! an Alle,
weiss jemand zufällig wie man printf so verbiegen kann,
das man es für Ausgaben auf ein LCD-Display benutzen kann.

Ich meine anstatt auf einem Bildschirm irgend Text oder Zahlen
Auszugeben eben auf dem LCD-Display.

Hinweis:
Das Display ist an 2Port's angeschlossen.

Wenn jemand Ideen oder Ansätze hat oder sogar weiss wie es geht, her
damit.

Gruß Klaus

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hallo! an Alle,
> weiss jemand zufällig wie man printf so verbiegen kann,
> das man es für Ausgaben auf ein LCD-Display benutzen kann.

Das hängt davon ab, welche C-Library du verwendest.

Autor: Grimm_zek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>...her damit.

So fressen meine Elephanten das Grünzeug von den Bäumen.

Autor: Klaus...(Norad) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Grimm_zek

Bitte mal einfach mal die Schnauze halten.

@Rolf
Ich hoffe Du kennst Ride von Raisonance.
Nun ich benutze die Standard  C-Library bzw. das was von Raisonance
mitgeliefert wird in der Demo Version.
Aber es ist im Prinzip mal egal ich wollte einfach nur wissen ob man
den printf befehl für eigene Ausgaben nutzbar machen kann, Ich würde
ungern das Rad neu erfinden wollen.

Vielleicht ist es auch besser eine eigen Routine zuschreiben.

Gruß Klaus

Autor: cazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sprintf() benutzen, schreibt die printf()-Ausgabe in einen RAM-Puffer.
Von dort aus ab ans Display.

Autor: Klaus...(Norad) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@cazy

Danke für den Hinweis werd mich gleich mal dran machen.


Mfg  Klaus

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
<< Bitte mal einfach mal die Schnauze halten.

Der Vergleich mit den Elefanten hat wohl genau getroffen.

Autor: Mighty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was sind denn das für Umgangsformen?!
Dem würde ich definitiv nichtmehr helfen...


MfG

Autor: Klaus...(Norad) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Michael

Einfach die Schnauze halten wenn Du nichts Konstruktives beitragen
möchtest.

Wer sich hier über jeden Scheiß die Schnauze vereisst der ist hier wohl
falsch gepolt.

Ausserdem will ich hier niemanden beleidigen etc... wer sich jetzt auf
den Schlips getreten fühlt dafür kann ich nichts aber wer mich von der
Seite blöd anmacht dem gebe ich schon kontra.

Ausserdem weiss niemand alles und ich denke doch, das dies ein Forum
ist in dem Wissen ausgetauscht bzw. weiter gegeben darf.

Ich hab von niemanden gefordert einen kompletten Code bereitzustellen
um ihn einfach zu kopieren,  oder!

bissel will ich schon noch selber machen. ;-)

Mfg  Klaus

Autor: Klaus...(Norad) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Mighty

meinste mich damit??


Mfg Klaus

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um wieder zum Anfangsthema zurückzukommen:
@cazy horse
Wie kann man mit printf in den RAM schreiben und wie holt man den
Inhalt wieder heraus, um ihn dann an ein LCD zu schicken?
Wie es mit einem  [Feld] geht, weiß ich, aber nach stundenlangen
vergeblichen Versuchen mit printf muss ich doch hier noch einmal
nachfragen.
MfG
Wolfgang

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
char buffer[50];
int foo;
int bar;

sprintf(buffer, "foo:%d bar:%d",foo,bar);

writeStringToLCD(buffer);


Matthias

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sicherer:

  snprintf(buffer, 50, "foo:%d bar:%d", foo, bar);

Desweiteren ist üblicherweise bei der Beschreibung der C-Library des
Compilers beschrieben, welche Funktion für die Ausgabe einzelner
Zeichen zuständig ist, die von printf/puts/etc. verwendet wird, und wie
diese durch eine eigene zu ersetzen ist.
Möglicherweise heißt die putchar oder putc oder so.
Der Compiler liefert (zumindest in diesem Falle) eine mit, die die
Zeichen auf der seriellen Schnittstelle ausgibt.

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

wobei man dann auch unbedingt den Rückgabewert von snprintf() prüfen
sollte, denn snprintf() schreibt AFAIK n Zeichen in den Puffer. Ist n
erreicht bricht die Funktion ab und schreibt kein \0 mehr in den
Puffer und das resultiert in einem unterminierten String. Als minimale
Fehlerbehandlung empfiehlt sich dann sowas:
char buffer[50];
int foo;
int bar;

if(snprintf(buffer, sizeof(buffer)-1, "foo:%d bar:%d",foo,bar)<0)
{
    buffer[sizeof(buffer)-1] = '\0';
}

writeStringToLCD(buffer);

Matthias

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
''Wer sich hier über jeden Scheiß die Schnauze vereisst der ist hier
wohl falsch gepolt.

Was bist Du denn für ein Nikolaus ?
Wohl zuviel Unterschichtenfernsehen gekuckt.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich hoffe Du kennst Ride von Raisonance.

Nein, leider nicht.

> Aber es ist im Prinzip mal egal ich wollte einfach nur wissen ob
> man den printf befehl für eigene Ausgaben nutzbar machen kann,

Nun, wenn du eine allgemeine Antwort willst, so lautet diese "nein".
In der C-Norm ist nichts dafür vorgesehen. Einige Implementationen
bieten aber dennoch eine Möglichkeit, die Ausgaben an eine
selbstgeschriebene Funktion zu leiten, aber die sieht dann eben je nach
Implementation unterschiedlich aus. Daher meine Frage. Schon mal in der
Doku nachgelesen, ob da was dazu steht?

Die Alternative ist das shcon angesprochene snprintf, mit dem du eben
in einen Puffer schreibst, den du dann ausgeben kannst. Ist halt nicht
so elegant wie direkt mit printf, geht aber zur Not auch.

@Matthias:

Ich würde die Prüfung einfach bleiben lassen und immer ans Ende das
'\0' hängen. Meist braucht das if alleine schon mehr Zeit als das
Schreiben dieses Bytes.

Autor: Klaus...(Norad) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rolf und Matthias!

Vielen Dank für euere Info und Beispiele! Wird mir sicher weiter
helfen.


Mfg  Klaus

Autor: Klaus die Maus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
*huhuuuu LCD LCD LCD !

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Hinweise,  mit sprintf läuft es jetzt.
Schade, dass ein Teil der Beiträge nur Mist enthalten.
MfG
Wolfgang

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.