command.c

来自「基于AT89C51SND1C的MP3源代码」· C语言 代码 · 共 104 行

C
104
字号
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

#ifndef _TYPE_DEFINE
	#define _TYPE_DEFINE
	typedef bit BOOL;
	typedef char Uchar;
	typedef unsigned char Uint8;
	typedef unsigned int Uint16;
	typedef unsigned long Uint32;
#endif

#define GETKEY				_getkey()			//键盘函数
#define PROMPT				">"					//提示符
#define MAX_CMD_NUM			16					//命令数
#define MAX_CMD_LENGTH		128					//最大命令长度

xdata Uint8 CommandBuffer[MAX_CMD_LENGTH];

struct Str_CMD
{
	Uint8 Command[MAX_CMD_LENGTH];
};

code struct Str_CMD CMD[]=
{
	{"HELP"},
	{"INIT DISK"},
	{"LIST DISK"},
	{"MOUNT DISK "},
	{"LIST DRIVE"},
	{"MOUNT DRIVE "},
	{"DIR"},
	{"CD "},
	{"PLAY "},
	{"STOP"},
	{"PAUSE"},
	{"GOON"},
	{"LVOL "},
	{"RVOL "},
	{"AVOL "},
	{"BASS "}
};

Uint8 AcceptCmd(void);
void PrintLogo(void);
void Help(void);

Uint8 AcceptCmd(void)
{
	register Uint8 i,keycode;

	while(1)
	{
		i=0;
		printf("%s",PROMPT);
		keycode=GETKEY;
		while(keycode!=0x0d&&i<MAX_CMD_LENGTH)
		{
			putchar(keycode);
			CommandBuffer[i]=toupper(keycode);
			keycode=GETKEY;
			i++;
		}
		if (i==MAX_CMD_LENGTH)
			printf("\n 命令太长.\n");
		else if (i==0)
		{
			printf("\n");
		}
		else
		{
			putchar(0x0a);
			CommandBuffer[i]=0x00;
			i=0;
			while(i<MAX_CMD_NUM&&strncmp(CMD[i].Command,CommandBuffer,strlen(CMD[i].Command))) i++;
			if (i<MAX_CMD_NUM) return(i); else printf("未知命令.\n");
		}
	}
}

void PrintLogo(void)
{
	printf("\n");
	printf("**************************** \n");
	printf("*      MP3DIY Console      * \n");
	printf("*           Beta 1         * \n");
	printf("*     2004.05.23 01:00     * \n");
	printf("*  http://mp3diy.cable.nu  * \n");
	printf("**************************** \n");
	printf("\n");
}

void Help(void)
{
	register Uint8 i;
	printf("支持如下命令:\n");
	for(i=0;i<MAX_CMD_NUM;i++)
		printf("\t %s\n",CMD[i].Command);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?