芯片资讯
你的位置:LONGSON龙芯中科(龙芯)处理器IC芯片全系列-亿配芯城 > 芯片资讯 > 单片机上如何做shell命令行交互
单片机上如何做shell命令行交互
- 发布日期:2024-01-09 11:51 点击次数:176
做过嵌入式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)
相关资讯
- MOSFET的寄生电容是如何影响其开关速度的?2024-09-20
- 如何用万用表快速测量MOS管的好坏?2024-09-15
- 齐纳二极管和并联拓扑如何选择合适的并联电阻的探讨2024-08-22
- 电子行业单片机解密的发展趋势2024-08-13
- 智能控制如何降低能耗?2024-07-30
- TI教你解决MCU单片机800V电动汽车EV牵引逆变器常见设计挑战的三种方式2024-07-29