芯片资讯
你的位置:LONGSON龙芯中科(龙芯)处理器IC芯片全系列-亿配芯城 > 芯片资讯 > 单片机上如何做shell命令行交互
单片机上如何做shell命令行交互
- 发布日期:2024-01-09 11:51 点击次数:180
做过嵌入式Linux开发或使用过桌面Linux系统的童鞋们,肯定对shell命令交互印象比较深刻,然而我们大多数搞嵌入式软件开发的码农都是基于单片机,比如51、STM32等进行开发的,在单片机上能否做个shell命令行交互?答案当然是可以的,在网上类似的文章和代码一搜一箩筐, 基本原理: 监测用户的输入,然后到一个命令查找表里过滤是否可以找到该命令,如果可以则调用对应的处理函数,当然做的好点的话还可以向处理函数传递参数。
主要的数据结构及解析函数定义如下,注意这里函数指针的定义,Argc代表参数的个数,LONGSON龙芯中科(龙芯)处理器IC芯片 可以为0、1、2...,Argv用于存放具体的参数,可能有些童鞋要问为啥定义成CHAR **,这是因为我们在shell交互窗口输入的内容都会被当作ASCII码字符串,所以只能用CHAR *来指向它们,另外又因为我们可能会输入多个字符串参数(多个参数以空格进行间隔),所以要使用二级指针CHAR **,可能有的同学会发现,我们平时见的标准main函数的原型就是这样定义的
int main(int argc, char *argv[])
char *argv[]与char **argv是等价的,这个就不需要解释了吧,采用这种定义方式可以非常灵活,具体见下面的用法示例:
#define SHELL_MAX_PARA_NUM 20 //最多支持20个命令参数 // 函数指针 typedef UINT8 (* Cmd_Analys_Fun_P)(UINT8 Argc, CHAR **Argv); typedef struct { CHAR *pName; Cmd_Analys_Fun_P pCmdFunc; // 命令解析函数 } S_Shell_Cmd; /*************************************************************** * 函数名称: Shell_Proc * 功能描述: Shell交互处理 * 输入参数: * 输出参数: * 返 回 值: ****************************************************************/ UINT8 Shell_Proc(CHAR *ucCmd, UINT8 ucCmdLength) { UINT8 Result; Result = Cmd_Analys(Shell_Cmd, S_NUM(Shell_Cmd), ucCmd, ucCmdLength); if ((Result EQ 1)
相关资讯
- 关于STM8S003F3P6单片机芯片资料2024-12-02
- 单片机与串行AD转换器TLC0834的接口设计2024-11-23
- 如何利用零漂移放大器实现高精度系统设计?2024-11-17
- ic网:无线电力如何高性能的传输?2024-11-15
- 如何对利用pcb板进入反推原理图?2024-11-12
- 电容器什么情况下会出现跳闸,应该如何解决?2024-11-11