erstellen einer printf() funktion aus putc()

Gast #122364
wie kann ich mit der putc() funktion , die ja nur ein character
überträgt eine printf oder sprintf funktion bauen, die komplette
strings überträgt....
ich benötige die Funktion um daten zwischen mikrocontroller und pc zu
übertragen
danke
Samuel


meine putc() funktion sieht folgendermassen aus:

void putc(UBYTE SendChar)
{
   //*******************************
  // Notice while loop!!!!!
  // *****************************
  //We will wait here till the last char was transmitted
   while(!SciaRegs.SCICTL2.bit.TXRDY);
   SciaRegs.SCITXBUF=SendChar;
}
Gast
trotz der etwas unglücklich formulierten frage (printf u8nterstützt eine
menge formatierungen) denk ich mal das ist das richtige

void put_string(char* s)  //Send null-terminated string on the UART Tx
line.
{
  char c;

    while ( (c = *s++) ) {
        putc(c);
  }
}
Gast
super.....danke...hat geklappt...
jetzt muss ich das noch in umgekehrter Richtung haben, also dass ich
einen string vom PC zum Mikrocontroller schicke.zum Empfangen eines
characters habe ich mir folgende funktionen gebaut:
hast du eine Idee wie man aus dieser funtion eine funktion bauen kann,
die einen ganzen string empfängt?


//******************************
// We want to get a char from the SCI port, thus return the char
// *****************************
UBYTE getc(void)
{
 while(!kbhit());
 return SciaRegs.SCIRXBUF.bit.RXDT;
}


wobei die funktion kbhit() auf Übertragungsfehler überprüft und das
Ready bit zurückliefert, was bedeutet, dass ein zeichen richtig im
eingangsbuffer angekommen ist
Gast
Am besten schreibst du das, was ankommt in einen Ringspeicher. Wenn der
so ca. halb voll ist, schickst du xoff oder was auch immer für ein
Handshake du benutzt. Wenn er wieder leer genug ist, lässt du wieder
eine Übertragung zu.
Wenn du das Interrupt gesteuert machst, also bei jedem ankommenden
Zeichen in der Service Routine den Empfangs Ringspeicher verwaltest,
bist du gut gerüstet. Diesen Empfangspuffer kannst du dann ganz in Ruhe
analysieren und nach Steuerzeichen durchsuchen etc.

Antwort schreiben

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