Modify the Linux example of XCMD

This commit is contained in:
weidonglin 2021-09-13 20:25:39 +08:00
parent 22dd57e08b
commit db790b5548
2 changed files with 28 additions and 19 deletions

View File

@ -9,6 +9,9 @@
#include<sys/socket.h> #include<sys/socket.h>
#include <termio.h> #include <termio.h>
static xcmder_t *g_cmder = NULL;
extern void test_cmd_init(xcmder_t *cmder); extern void test_cmd_init(xcmder_t *cmder);
int getch(void) int getch(void)
@ -27,7 +30,7 @@ int getch(void)
} }
ch = getchar(); ch = getchar();
// printf("%d\n", ch); //xcmd_print(g_cmder, "%d\n", ch);
if (tcsetattr(fd, TCSANOW, &tm_old) < 0) {//更改设置为最初的样子 if (tcsetattr(fd, TCSANOW, &tm_old) < 0) {//更改设置为最初的样子
return -1; return -1;
} }
@ -49,7 +52,7 @@ int cmd_put_char(uint8_t ch)
int cmd_ctr_a(void* pv) int cmd_ctr_a(void* pv)
{ {
printf("this is ctr+a\n"); xcmd_print(g_cmder, "this is ctr+a\n");
} }
int cmd_ctr_c(void* pv) int cmd_ctr_c(void* pv)
@ -68,19 +71,24 @@ void user_keys_init(xcmder_t *cmder)
xcmd_key_register(cmder, user_keys, sizeof(user_keys)/sizeof(xcmd_key_t)); xcmd_key_register(cmder, user_keys, sizeof(user_keys)/sizeof(xcmd_key_t));
} }
xcmder_t* user_get_cmder(void)
{
return g_cmder;
}
int main(void) int main(void)
{ {
xcmder_t* cmder = xcmd_create_default(cmd_get_char, cmd_put_char); xcmder_t* g_cmder = xcmd_create_default(cmd_get_char, cmd_put_char);
if(cmder) if(g_cmder)
{ {
test_cmd_init(cmder); test_cmd_init(g_cmder);
user_keys_init(cmder); user_keys_init(g_cmder);
default_keys_init(cmder); default_keys_init(g_cmder);
default_cmds_init(cmder); default_cmds_init(g_cmder);
xcmd_exec(cmder, "logo"); xcmd_exec(g_cmder, "logo");
while(1) while(1)
{ {
xcmd_task(cmder); xcmd_task(g_cmder);
} }
} }
return 1; return 1;

View File

@ -5,7 +5,8 @@
static xcmder_t *g_cmder = NULL; static xcmder_t *g_cmder = NULL;
#define EXIT_MESSAGE() printf("press \"q\" or \"Q\" to exit!\r\n") #define EXIT_MESSAGE() xcmd_print(g_cmder, "press \"q\" or \"Q\" to exit!\r\n")
#define EXIT_CHECK() \ #define EXIT_CHECK() \
do \ do \
(toupper(GET_CHAR()) == 'Q') \ (toupper(GET_CHAR()) == 'Q') \
@ -31,16 +32,16 @@ static uint8_t param_check(int need, int argc, char*argv[])
} }
else else
{ {
printf("err need %d but input %d:\r\n", need, argc-1); xcmd_print(g_cmder, "err need %d but input %d:\r\n", need, argc-1);
printf("input= "); xcmd_print(g_cmder, "input= ");
for(i=0; i<argc; i++) for(i=0; i<argc; i++)
{ {
if(argv[i] != NULL) if(argv[i] != NULL)
{ {
printf("%s ", argv[i]); xcmd_print(g_cmder, "%s ", argv[i]);
} }
} }
printf("\r\n"); xcmd_print(g_cmder, "\r\n");
ret = 0; ret = 0;
} }
return ret; return ret;
@ -50,7 +51,7 @@ static void cmd_echo(int argc, char* argv[])
{ {
if(param_check(1, argc, argv)) if(param_check(1, argc, argv))
{ {
printf("%s\r\n", argv[1]); xcmd_print(g_cmder, "%s\r\n", argv[1]);
} }
} }
@ -63,21 +64,21 @@ static void cmd_example(int argc, char* argv[])
{ {
for(i=2; i<argc; i++) for(i=2; i<argc; i++)
{ {
printf("%s\r\n", argv[i]); xcmd_print(g_cmder, "%s\r\n", argv[i]);
} }
} }
if(strcmp(argv[1], "int") == 0) if(strcmp(argv[1], "int") == 0)
{ {
for(i=2; i<argc; i++) for(i=2; i<argc; i++)
{ {
printf("%d\r\n", atoi(argv[i])); xcmd_print(g_cmder, "%d\r\n", atoi(argv[i]));
} }
} }
if(strcmp(argv[1], "float") == 0) if(strcmp(argv[1], "float") == 0)
{ {
for(i=2; i<argc; i++) for(i=2; i<argc; i++)
{ {
printf("%f\r\n", atof(argv[i])); xcmd_print(g_cmder, "%f\r\n", atof(argv[i]));
} }
} }
} }