Gast
#4880774
Komplettes JSON passt wohl nicht so richtig in einen Mega88/168, aber
letzendlich brauch ich das auch gar nicht. Sind auch nur sehr
überschaubare Datensätze und leicht auseinander zu puzzeln. Allerdings
kommt immer noch bisschen was dazu, und es unterscheidet sich auch von
Gerätetyp zu Gerätetyp (RS485-Bus)
So funktioniert es bestens, gefällt mir aber nicht.
#define RD_cmd 1
#define VER_cmd 2
#define CONFIG_cmd 3
.
.
.
unsigned char parse_command (char * s)
{unsigned char command=0;
if (!(strncmpf (s, "\"RD\":", 5)))
{command=RD_cmd;
JsonPtr+=5;
}
else if (!(strncmpf (s, "\"VER\":", 6)))
{...
}
.
.
return (command);
}
Vergleicht also mit s mit <"RD":> (5 Zeichen) und erhöht bei Erfolg
JsonPtr um 5. Und genau die magic number 5 ( oder 6, andere sind z.T.
noch erheblich länger) sind mein Problem. Lästig und fehleranfällig das
abzuzählen....
Ideal wäre, auch den Vergleichsstring per #define anzugeben und der
Compiler soll Vergleichslänge/offset selbst auskaspern. Geht das
irgendwie?