www.pudn.com > ucos_shell.rar > yyshellsub.c
#includeextern 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++='.'; } } }