В моей C-программе у меня есть скелет для интерпретатора команд. Он отлично работает в Linux / GCC, но в Arduino не возвращает ожидаемых результатов.
Ниже найдите код ПК. Я сделал соответствующие изменения для Arduino, и он работает, за исключением строки возврата (см. Вторую строку снизу в листинге).
C-код на ПК (работает):
#include <stdio.h>
char* help(char *s){
char *helpString="This is the help string\n";
return helpString;
}
typedef struct {
const char* command;
char* (*cmdExec)(char *s);
}S_COMMAND;
S_COMMAND cmdTable[]= {
{"he", help}
};
int main(void){
char *text;
printf("\n%s\t",cmdTable[0].command); // returns "he"
text = (cmdTable[0].cmdExec)("0");
/* returns help string on PC as expected, but garbage on Arduino */
printf("\n%s", text);
}