⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yyshellsub.c

📁 Keil C51的UCOS-2操作系统源代码
💻 C
字号:
#include  <includes.h>

extern xdata union ip_address_type my_ip_address;       //本机的ip地址
extern xdata union ip_address_type temp_ip_address;     //临时变量
extern xdata union ip_address_type mask_ip_address;     //子网掩码
extern xdata union ip_address_type gateway_ip_address;	//网关的ip地址
extern xdata union ip_address_type ping_ip_address;	//用于ping命令

extern WORDTABLE WordTable;

void DisplayTask(WORDTABLE *WordTable) reentrant//显示任务
{
	PrintStr("\n\tDisplay Task command excuted.\n\n");
}

void Kill(WORDTABLE *WordTable) reentrant//杀死任务
{
	PrintStr("\n\tKill Task command excuted.\n\n");
}

void PingCommand(WORDTABLE *WordTable) reentrant//ping命令
{
	if(WordTable->Num==1)
		PrintStr("\n\tPlease input IP address!\n\n");
	else{
		if(IPadrToHEX(WordTable->wt[1].Str,&ping_ip_address)==0){
			PrintStr("\n\tIP address error!\n\n");return;
		}
		else{	
			//trans_pack(&txdnet,ping_ip_address,74,PINGTYPE);
			PrintStr("\n\tPing command is excuted.\n\n");			
		}
	}
}

void UDPCommand(WORDTABLE *WordTable) reentrant//udp命令
{
	if(WordTable->Num==1)
		PrintStr("\n\tPlease input IP address!\n\n");
	else if(WordTable->Num==2){
		PrintStr("\n\tPlease input UDP data(String)!\n\n");
	}
	else{
		if(IPadrToHEX(WordTable->wt[1].Str,&temp_ip_address)==0){
			PrintStr("\n\tIP address error!\n\n");return;
		}
		else{			
			//make_udp(&txdnet,temp_ip_address,WordTable->wt[2].Str,strlen(WordTable->wt[2].Str)+1,1025);
			PrintStr("\n\tUDP command is excuted.\n\n");
		}
	}
}

void CfgHost(WORDTABLE *WordTable) reentrant//配置主机IP地址
{
	unsigned char ipstr[16];
	union ip_address_type tmy_ip_address;
	
	if(WordTable->Num==1){
		//getadr(HOST,&my_ip_address.bytes[0]);//读出本机IP地址存到my_ip_address.bytes[4]里
		PrintStr("\nHOST IP ADDRESS=");
		HEXToIPadr(ipstr,&my_ip_address);
		PrintStr(ipstr);PrintStr("\n\n");	
	}
	else{		
		if(IPadrToHEX(WordTable->wt[1].Str,&tmy_ip_address)==0){
			PrintStr("\n\tIP address error!\n\n");return;
		}
		else{
			//getadr(HOST,&temp_ip_address.bytes[0]);//读出本机IP地址存到my_ip_address.bytes[4]里
			temp_ip_address.dwords=my_ip_address.dwords;
			
			PrintStr("\nOLD HOST IP ADDRESS=");
			HEXToIPadr(ipstr,&temp_ip_address);
			PrintStr(ipstr);PrintStr("\n");

			//setadr(HOST,&tmy_ip_address.bytes[0]);			
			//getadr(HOST,&my_ip_address.bytes[0]);
			my_ip_address.dwords=tmy_ip_address.dwords;
			
			PrintStr("\nNEW HOST IP ADDRESS=");
			HEXToIPadr(ipstr,&my_ip_address);
			PrintStr(ipstr);PrintStr("\n\n");
		}		
	}
}

void CfgMask(WORDTABLE *WordTable) reentrant//配置子网掩码
{
	unsigned char ipstr[16];
	union ip_address_type tmask_ip_address;

	if(WordTable->Num==1){
		//getadr(MASK,&mask_ip_address.bytes[0]);//读出本机掩码存到mask_ip_address.bytes[4]里
		PrintStr("\nSUBNET MASK=");
		HEXToIPadr(ipstr,&mask_ip_address);
		PrintStr(ipstr);PrintStr("\n\n");
	}
	else{		
		if(IPadrToHEX(WordTable->wt[1].Str,&tmask_ip_address)==0){
			PrintStr("\n\tSUBNET MASK error!\n\n");return;
		}
		else{
			//getadr(MASK,&temp_ip_address.bytes[0]);//读出本机IP地址存到my_ip_address.bytes[4]里
			temp_ip_address.dwords=mask_ip_address.dwords;
			
			PrintStr("\nOLD SUBNET MASK=");
			HEXToIPadr(ipstr,&temp_ip_address);
			PrintStr(ipstr);PrintStr("\n");

			//setadr(MASK,&tmask_ip_address.bytes[0]);
			//getadr(MASK,&mask_ip_address.bytes[0]);
			mask_ip_address.dwords=tmask_ip_address.dwords;
			
			PrintStr("\nNEW SUBNET MASK=");
			HEXToIPadr(ipstr,&mask_ip_address);
			PrintStr(ipstr);PrintStr("\n\n");			
		}		
	}
}

void CfgGateway(WORDTABLE *WordTable) reentrant//配置网关IP地址
{
	unsigned char ipstr[16];
	union ip_address_type tgateway_ip_address;

	if(WordTable->Num==1){
		//getadr(GATEWAY,&gateway_ip_address.bytes[0]);//读出网关IP地址存到gateway_ip_address.bytes[4]里		
		PrintStr("\nGATEWAY IP ADDRESS=");
		HEXToIPadr(ipstr,&gateway_ip_address);
		PrintStr(ipstr);PrintStr("\n\n");
	}
	else{		
		if(IPadrToHEX(WordTable->wt[1].Str,&tgateway_ip_address)==0){
			PrintStr("\n\tIP address error!\n\n");return;
		}
		else{
			//getadr(GATEWAY,&temp_ip_address.bytes[0]);//读出本机IP地址存到my_ip_address.bytes[4]里
			temp_ip_address.dwords=gateway_ip_address.dwords;
			
			PrintStr("\nOLD GATEWAY IP ADDRESS=");
			HEXToIPadr(ipstr,&temp_ip_address);
			PrintStr(ipstr);PrintStr("\n");

			//setadr(GATEWAY,&tgateway_ip_address.bytes[0]);
			//getadr(GATEWAY,&gateway_ip_address.bytes[0]);
			gateway_ip_address.dwords=tgateway_ip_address.dwords;
			
			PrintStr("\nNEW GATEWAY IP ADDRESS=");
			HEXToIPadr(ipstr,&gateway_ip_address);
			PrintStr(ipstr);PrintStr("\n\n");
		}		
	}
}

void PrintConfig(WORDTABLE *WordTable) reentrant//显示配置信息
{
	unsigned char ipstr[16];

	PrintStr("\nConfig options:\n");
	/*
	getadr(MACADR,&my_ethernet_address.bytes[0]);//读出主机MAC地址存到my_ethernet_address里	
	PrintStr("\nHOST MAC ADDRESS=");
	PrintWord(my_ethernet_address.words[0]);PrintStr(" ");
	PrintWord(my_ethernet_address.words[1]);PrintStr(" ");
	PrintWord(my_ethernet_address.words[2]);PrintStr("\n");
		
	page(1);//init 8019as PAR
	reg01=my_ethernet_address.bytes[0];
	reg02=my_ethernet_address.bytes[1];
	reg03=my_ethernet_address.bytes[2];
	reg04=my_ethernet_address.bytes[3];
	reg05=my_ethernet_address.bytes[4];
	reg06=my_ethernet_address.bytes[5];	

	page(0);
	reg00=0x22;
	*/
	//getadr(HOST,&my_ip_address.bytes[0]);//读出本机IP地址存到my_ip_address.bytes[4]里
	PrintStr("HOST IP ADDRESS=");
	HEXToIPadr(ipstr,&my_ip_address);
	PrintStr(ipstr);PrintStr("\n");

	//getadr(GATEWAY,&gateway_ip_address.bytes[0]);//读出网关IP地址存到gateway_ip_address.bytes[4]里
	PrintStr("GATEWAY IP ADDRESS=");
	HEXToIPadr(ipstr,&gateway_ip_address);
	PrintStr(ipstr);PrintStr("\n");

	//getadr(MASK,&mask_ip_address.bytes[0]);//读出本机掩码存到mask_ip_address.bytes[4]里
	PrintStr("SUBNET MASK=");
	HEXToIPadr(ipstr,&mask_ip_address);
	PrintStr(ipstr);PrintStr("\n\n");

	/*
	getadr(SNMPHOST,&SNMP_ip_address.bytes[0]);//读出SNMP网管主机IP地址存到SNMP_ip_address.bytes[4]里	
	PrintStr("SNMPHOST IP ADDRESS=");
	HEXToIPadr(ipstr,&SNMP_ip_address);
	PrintStr(ipstr);PrintStr("\n\n");*/
}

void DisplayHelpMenu(WORDTABLE *WordTable) reentrant//显示帮助采单
{
	PrintStr("\n");
	PrintStr("\tlt        Display active task.\n");
	PrintStr("\tkill      Kill active task.\n");
	PrintStr("\tping/udp  net command.\n");
	PrintStr("\tConfigNet host/mask/gateway/ipcfg.\n");	
	PrintStr("\tclr       Clear screen.\n");	
	PrintStr("\texit      Exit.(this command is limited here.)\n");
	PrintStr("\thelp      Display this menu.\n\n");
}

bit IPadrToHEX(unsigned char *Str,union ip_address_type *ip)
{
	unsigned char i,j,ch,x;

	ch=*Str++;

	for(j=0;j<3;j++){
		x=0;
		for(i=0;i<4;i++){
			if(ch=='.') {ch=*Str++;break;}
			else if(i==3) return 0;
			else if(ch<0&&ch>9) return 0;
			else
				x=10*x+(ch-'0');
			ch=*Str++;
		}
		ip->bytes[j]=x;
	}

	x=0;
	for(i=0;i<4;i++){
		if(ch=='\0') {ch=*Str++;break;}
		else if(i==3) return 0;
		else if(ch<0&&ch>9) return 0;
		else
			x=10*x+(ch-'0');
		ch=*Str++;
	}
	ip->bytes[3]=x;
	return 1;
}

void HEXToIPadr(unsigned char *Str,union ip_address_type *ip)
{
	unsigned char i;
	unsigned char x,y;

	for(i=0;i<4;i++){
		x=ip->bytes[i];
		if(x>99){
			y=x/100;*Str++=y+'0';
			x=x-100*y;y=x/10;*Str++=y+'0';
			x=x-10*y;*Str++=x+'0';
			if(i==3) *Str++='\0';
			else *Str++='.';
		}
		else if(x>9){
			y=x/10;*Str++=y+'0';
			x=x-10*y;*Str++=x+'0';
			if(i==3) *Str++='\0';
			else *Str++='.';
		}
		else{
			*Str++=x+'0';
			if(i==3) *Str++='\0';
			else *Str++='.';
		}
	}	
}

⌨️ 快捷键说明

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