Das allerwichtigste, das du klären musst ist:
Woran kann man erkennen das der übertragene String
jetzt zuende ist?
Das ist das der Dreh- und Angelpunkt in der ganzen Sache.
Normalerweise wird dazu ein spezielles Zeichen benutzt.
Sei dies jetzt ein Carriage Return oder ein ';', sei es
ein '.' oder sonst irgendein Sonderzeichen. Denkbar wäre
auch, dass mit dem ersten Leerzeichen der String zuende ist,
oder das der zu übertragende String in " eingeschlossen wird.
Es gibt mit Sicherheit noch x andere verschiedene Möglichkeiten
die mir jetzt in 20 Sekunden nicht einfallen.
Und daher gibt es keine fertige Funktionen.
In dem Moment aber, in dem du weist welche Methode du
benutzen kannst/willst ergibt sich die String Lesefunktion
praktisch von selbst. Es läuft letztendlich immer auf
eine Schleife hinaus, die einzelne Zeichen einiest und im
Zielstring speichert. Wie die Schleifenabbruchbedingung jetzt
konkret aussieht ergibt sich aus der gewählten Methode, wie das
Ende des zu übertragenden Strings aussieht.
Benutzt du zb. einen ';'
void uart_gets( char* Buffer, int BufferLen )
{
int i = 0;
char c;
while( ( c = uart_getc() ) != ';' && i < BufferLen - 1 )
Buffer[ i++ ] = c;
Buffer[i] = '\0';
}