?? cmdstr.c
字號:
/***********************************************Copyright (c)*********************************************
** Guangzou ZLG-MCU Development Co.,LTD.
**
** http://www.zlgmcu.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name: CmdStr.C
** Last modified Date: 2007-09-20
** Last Version: 1.0
** Descriptions: 對以前的代碼進行了整理
**
**--------------------------------------------------------------------------------------------------------
** Created by: chengmingji
** Created date: 2007-07-08
** Version: 1.0
** Descriptions: 第一版
**
**--------------------------------------------------------------------------------------------------------
** Modified by: lixiaocheng
** Modified Date: 2007-09-20
** Version: 1.0
** Descriptions: 對代碼進行了重新的整理
**
**--------------------------------------------------------------------------------------------------------
** Modified by: lixiaocheng
** Modified Date: 2007-10-16
** Version: 1.1
** Descriptions: 改進了ImpCmd函數(shù),對用戶傳入?yún)?shù)進行拷貝后在操作,并優(yōu)化了堆棧操作
** 改進了ExpCmd函數(shù),減少了一個參數(shù)輸入,減少了部件參數(shù)數(shù)量的輸入
**
*********************************************************************************************************/
#include "config.h"
/*********************************************************************************************************
** Function name: CmdStr
** Descriptions: 用戶命令初級處理
** input parameters: pstr : 用戶數(shù)組
** pargv :處理后的字符串指針
** Returned value: 操作成功:返回處理成功的字符命令個數(shù)
*********************************************************************************************************/
static int CmdStr (char *pstr, char *pargv[])
{
int argc;
char ch, ch1;
/* 除去開始的空格 */
while (*pstr==' ') {
pstr++;
}
argc = 0;
while (1) {
if (*pstr == '\"') {
pstr++;
pargv[argc] = pstr;
while (1) {
ch = *pstr;
if (ch == 0) {
pstr++;
break;
}
if (ch == '\"') {
ch1 = pstr[1];
if (ch1 == ' ') {
*pstr++ = 0;
break;
}
if (ch1 == 0) {
*pstr++ = 0;
ch = 0;
break;
}
}
pstr++;
}
} else {
pargv[argc] = pstr;
while (1) {
ch = *pstr;
if (ch == ' ' || ch == 0) {
*pstr++ = 0;
break;
}
pstr++;
}
}
argc++;
if (ch == 0) {
break;
}
/* 除去多余的空格 */
while ((ch = *pstr) == ' ') {
pstr++;
}
if (ch == 0) {
break;
}
}
return argc;
}
/*********************************************************************************************************
** Function name: ImpCmd
** Descriptions: 用戶字符命令轉換為系統(tǒng)可設置的數(shù)字參數(shù):
** input parameters: uiID : 外設編號:Tab_UART,Tab_I2C,Tab_SSP,Tab_SPI,Tab_RTC
** pcarg : 用戶輸入的字符串指針
** puiPara : 轉換后的數(shù)字參數(shù)地址
** Returned value: 操作成功:返回處理成功的字符命令個數(shù)
*********************************************************************************************************/
int ImpCmd (uint32 uiID,
char *pcarg,
uint32 *puiPara )
{
int iArgc;
int i,j;
int iSucc=0;
uint32 uiNum;
char *pcArgv[12];
char temp2[3]={'%','i','\0'};
uiNum = GucCmdTabNum[uiID]; /* 獲取命令參數(shù)表參數(shù)的個數(shù) */
if ( pcarg == NULL || puiPara == NULL ) {
return OPERATE_FAIL;
} else {
char temp[160];
strcpy( temp, pcarg); /* 拷貝用戶參數(shù)進行修改 */
iArgc = CmdStr(temp, pcArgv);
}
for (i=0; i<iArgc; i++) {
for (j=0; j<uiNum; j++) {
char temp[16];
strcpy(temp, Cmd_Tab[uiID][j]);
strcat(temp, temp2);
if ( sscanf((char *)pcArgv[i],temp,(puiPara+j)) != 0 ) {
iSucc ++;
break;
}
}
}
return iSucc; /* 解析完參數(shù)的個數(shù) */
}
/*********************************************************************************************************
** Function name: ExpCmd
** Descriptions: 系統(tǒng)設置的數(shù)字參數(shù)轉換為字符串輸出
** input parameters: uiID : 外設編號:Tab_UART,Tab_I2C,Tab_SSP,Tab_SPI,Tab_RTC
** pcarg : 用戶的字符串指針
** puiPara : 系統(tǒng)的數(shù)字參數(shù)地址
** Returned value: 操作成功:OPERATE_SUCCESS
*********************************************************************************************************/
int ExpCmd (uint32 uiID,
char *pcarg,
uint32 *puiPara )
{
int n;
uint32 uiNum;
char temp[8];
uiNum = GucCmdTabNum[uiID];
if ( pcarg == NULL || puiPara == NULL ) {
return OPERATE_FAIL;
}
*pcarg = '\0';
for(n=0;n<uiNum;n++) {
strcat(pcarg,Cmd_Tab[uiID][n]);
sprintf(temp,"%i ",puiPara[n]);
strcat(pcarg,temp);
}
return OPERATE_SUCCESS;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -