Guten Abend, ich hab nun einen ganzen Tag an einem Problem gesessen und komme nun einfach nicht mehr weiter. Ich hoffe einer von euch kann mir einen Schubs in die richtige Richtung geben um das Problem zu lösen. Ich versuche im Moment so was wie einen Command Line Interpreter auf einem ATMega 1284p umzusetzen. Die Low Level Funktionalitäten wie Senden und Empfangen habe ich alle erfolgreich umgesetzt. Die Daten liegen nach dem Empfang in einem ANSI C String wie z.B. "gettemperatur 1 1\0" Dies bedeutet hole mir die Temperatur von Sensor 1 mit Nachkommastelle. Mein Problem ist nun das ist nicht weiß wie ich diesen String nun in seine Teile zerlegen kann, so das ich zum Beispiel ein Array habe wo die 3 Teile oder Pointer zu den Teilen hinterlegt sind. Ich habe es bereits mit STRTOK versucht, hab es aber nicht hinbekommen. Ich bin für jede Hilfe Dankbar. MfG Florian
> Ich habe es bereits mit STRTOK versucht, hab es aber nicht hinbekommen.
Versuch zeigen oder einen der zahlreichen strtok Beiträge hier im
Forum suchen und daraus lernen.
Hi, hab noch etwas rumprobiert ,so funktioniert es ,aber nun stellt sich mir die frage ob das so effektiv ist. Nach dem Durchlauf stehen in token die Pointer zu den Tokens.
1 | char *pch; |
2 | char *token[10]; |
3 | pch = strtok(buffer," "); |
4 | i=0; |
5 | while (pch != NULL) |
6 | {
|
7 | token[i]=pch; |
8 | printf ("TOK %s\n",pch); |
9 | pch = strtok(NULL, " "); |
10 | i++; |
11 | }
|
Abgesehen davon, daß es buffer nicht gibt: Bei mehr als 10 Token wird es ziemlich ineffektiv :-)
>Die Daten liegen nach dem Empfang
Warum erst vollständig empfangen und (zwischen)speichern ?
Warum nicht gleich beim oder besser während des Empfanges auswerten?
Oh sorry hab vergessen den Buffer mit anzugeben. 10 werden es am ende nicht sein, aber ich habe das Array erstmal etwas größer gemacht. Ich denke es werden max. 5 Parameter. Nur aus Interesse: Gebt es eine bessere Methode?
"besser" ist immer ein dehnbarer Begriff. strtok hat Probleme, insbesondere bei Nebenläufigkeit (threads). Solange dich das nicht trifft, ist es ok.
Florian schrieb: > Ich denke es werden max. ... Sowas haben schon viele gedacht und die Annahme irgendwann vergessen :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.