Brauche Hilfe um Funktion zu verstehen
-
Hallo ich bräuchte etwas Hilfe : ) bin ziemlicher C neuling und muss mich mit embedded Programmierung beschäftigen.
Leider versteh ich das Programm das unten steht nicht so ganz, das ganze soll wohl dazu dienen eine Zeichenfolge vom Seriellen Port einzulesen. Ich hab Probleme mit den Zeigern, kann mir jemand erklären wie das ganze funktioniert, wie ich das ganze aufrufen muss (vielleicht sogar mit vorhergenender Variablendeklaration) und wie ich auf die eingelesenen Zeichen zugreifen kann ? also wie ich die in "buffer" gespeicherten Zeichen wieder ausgeben kann, Danke schonmal im voraus : )
ConsoleIsGetReady() schaut wohl ob am Seriellen Port noch was anliegt
BYTE ist einfach ein unsigned char
v = RCREG liest das aktuell anliegende Zeichen am Seriellen Port in die Variable vBYTE ConsoleGetString(char *buffer, BYTE bufferLen)
{
BYTE v;
BYTE count;count = 0;
do
{
if ( bufferLen-- == 0 )
break;while( !ConsoleIsGetReady() );
v = RCREG;
if ( v == '\r' || v == '\n' )
break;count++;
*buffer++ = v;
*buffer = '\0';
} while(1);
return count;
}
-
Versuch's einfach mal so:
char buffer[1024]={0}; ConsoleGetString(buffer,1024); printf(buffer);
-
Hollafuchs schrieb:
Leider versteh ich das Programm das unten steht nicht so ganz, das ganze soll wohl dazu dienen eine Zeichenfolge vom Seriellen Port einzulesen.
// Liesst zeichen von der Seriellen in einen Buffer // bufferlen ist die maximale Anzahl der Zeichen, die eintrudeln dürfen // Funktion arbeitet ähnlich wie 'fgets' BYTE ConsoleGetString (char *buffer, BYTE bufferLen) { BYTE v; // Das eingelesene Zeichen BYTE count; // Interne Zählvariable für Anzahl eingelesener Zeichen count = 0; // Zählvariable erstmal auf 0 do // Schleifenanfang { if ( bufferLen-- == 0 ) // Buffer voll, dann aufhören (Was ist wenn bufferlen anfangs 0 ist???) break; while( !ConsoleIsGetReady() ); // Warten bis ein Zeichen da ist v = RCREG; // Das Zeichen einlesen if ( v == '\r' || v == '\n' ) // Abbruch wenn Zeichen entweder CR oder LF ist break; // Ansonsten das Zeichen speichern count++; // Anzahl gespeicherter Zeichen zählen *buffer++ = v; // Zeichen in den Buffer schreiben, Bufferpointer eins weitersetzen *buffer = '\0'; // Eine 0 anhängen (wird beim nächsten mal überschrieben) } while(1); // Schleife nochmal durchlaufen return count; // Eine der Abbruchbedingungen ist eingetreten: Anzahl gespeicherter Zeichen zurückgeben }