📄 yyshellsub.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 + -