printf verbiegen auf Port

Gast #265761
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
Gast #265762
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.
Gast #265764
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
Gast #265769
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
Gast #265771
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
Persönliche Seite #265773
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.
Persönliche Seite #265774
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:
1
char buffer[50];
2
int foo;
3
int bar;
4

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

10
writeStringToLCD(buffer);

Matthias
Gast #265776
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 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.