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

📄 ip.c

📁 查询和下发IP查询和下发IP查询和下发IP查询和下发IP查询和下发IP
💻 C
📖 第 1 页 / 共 2 页
字号:
{
	
	
}
void _commanddisplay(U8 *buf,U16 len )
{

}
void main()
{
 	//系统初始化
 	
	_sysinit();
	_initvar();
	_initcom();
	_setcomport(INFRARED);
	_setscreenmode(CHINESEMODE);
	_setdispcolor(NORMALCOLOR);
	_setkeymode(2);
   _keybeep(1);// 关闭按键声音
   /*****初始化地址全局变量******/
   A10=0;//行政区划码
   A11=0;
   A2[0]=0;
   A2[1]=0;
   A3=0x00;//主站地址和组地址标志
   A[0]=A10;
   A[1]=A11;
   A[2]=A2[0];
   A[3]=A2[1];
   A[4]=A3;
	//显示首页
	_cls();
	_PutString(3, 5, "负控管理");
	_PutString(5, 4, "版本:V1.01");
	_PutString(1, 0, "泰安高通电子有限公司");
	//按键进入菜单选项页
	_bioskey(0);	//等待按一个键
	while(1)
	{
		//运行菜单程序,若按退出键则退出程序
    	if(!menu_tst())
			break;
	}
}
U8 menu_tst(void)
{
   	U8* Menu[] = { "1.主站IP及端口", "2.终端地址设置", "3.虚拟专用网设置", 
		"4.脉冲配置参数", "5.终端抄表间隔", "6.设测量点参数", "7.通讯方式", "关机"};         //菜单内容
	  S16	Choice;//菜单按键选择            
    _lcd_setcursor(0, 5, 5, 1);//关闭光标
    //建立主菜单
	while(1)
	{
		 _cls();
		_PutString(0, 0, "     负控设置     ");
   
		Choice = PopUpMenu(0, 1, 16, 9, Menu, "12345678", 8, 8, 1, 0, 0, NULL, 0 );
	  m_menuid=Choice;
   
		switch(Choice)
		{
		case 0 : return 0;
			break;
		case 1 : m_command();//主站IP及端口
			break;
		case 2 : m_command();//端口地址 
			break;
		case 3 : m_command();//虚拟专用网设置
			break;
		case 4 : m_command();//终端脉冲配置参数
			break;
		case 5 : m_command();//抄表间隔
			break;
		case 6 : m_command();//测量表基本参数
			break;
		case 7:  m_commuicate();//通讯方式
			 break;
		case 8:  m_close();//关机
		   break;
		default:
			return 0;			

		}
	}
}
void m_ipdisplay(void)
{
	_cls();
  _lcd_setcursor(4, 5, 5, 1);//打开光标
   /*
	 str[0][0]='6';
	 str[0][1]='7';
	 str[0][2]='8';
	 str[0][3]='9';
	 */
	_PutString(0, 0, "主IP:\n");//第0行
  _PutString(0, 6,str[0]);//主IP内容
	_PutString(1, 3, "端口:\n");//第1行
	_PutString(1, 8,str[1]);//第1行
	_PutString(2, 0, "副IP:\n");//第2行
	_PutString(3, 3, "端口:\n");//第3行
	_PutString(4, 0, "网关:\n");//第4行
	_PutString(5, 3, "端口:\n");//第5行

	_PutString(6, 0, "代理:\n");//第6行
	_PutString(7, 3, "端口:\n");//第7行
	_PutString(8, 0, "APN :\n");//第8行
  _PutString(8,6,str[8]);//主IP内容
  _gotoxy(5,0);//光标指向第1行输入
		
}
U8 m_ip(void)
{
	U8 lincnt;
	lincnt=8;
//_initvar();
 	m_ipdisplay();
  string_key(lincnt);
  _initvar();
   return 0;	
 }
void m_adddisplay(void)
{
  _cls();
  _lcd_setcursor(4, 5, 5, 1);//打开光标
  
  _PutString(0, 0, "终端地址 :\n");//第2行
  _PutString(0, 10, Add[0]);//第2行
	_PutString(1, 0, "区划码A10:\n");//第3行
	_PutString(1, 10, Add[1]);//第3行
	_PutString(2, 0, "区划码A11:\n");//第4行 
	_PutString(2, 10, Add[2]);
  _gotoxy(10,0);//光标指向第0行输入
}
U8 m_add(void)
{

	U8 lincnt;
	lincnt=2;
	_initvar();
	m_adddisplay();
  if(!string_key(lincnt))
  {
     _initvar();
  }
   return 0;	
}
void m_commuicatedisplay(void)
{
	U8* Menu[] = {"电缆 RS-232", "红外通讯口", "电缆 RS-485"};  //菜单内容
  S16	Choice;             
	while(1)
	{
	 _cls();   
	 _PutString(1, 4, "选择通讯方式\n");
	 _draw_border(3,3,16,9);
   _lcd_setcursor(0, 5, 5, 1);//关闭光标
	 Choice = PopUpMenu(4,4,16,9, Menu, "123", 3, 3, m_commuicatemenuid, 0, 0, NULL, 0 );
	
	 switch(Choice)
	 {
		case 0 : return ;
			break;
		case 1 :
			{
				 _setcomport(PORT);//电缆RS-232
			      m_commuicatemenuid=1;
		  }
			break;
		case 2 :
			{
				_setcomport(INFRARED);//红外通讯口
				 m_commuicatemenuid=2;
			}
		 break;
		case 3 : m_commuicatemenuid=3;
			 //电缆RS-485
		 break;
		default:
			return ;			
  }
 }
}
U8 m_commuicate(void)
{
	// _initvar();
	 m_commuicatedisplay();
   return 0;	
}
void m_xunidisplay(void)
{
	_cls();
	_lcd_setcursor(4, 5, 5, 1);//打开光标
	_PutString(0, 0, "用户名:\n");//第2行
	_PutString(1, 0, "密  码:\n");//第3行
  _gotoxy(7,0);//光标指向第0行输入
}
U8 m_xuni()//虚拟专用网设置
{
	U8 lincnt;
	lincnt=1;
	_initvar();
	m_xunidisplay();
  if(!string_key(lincnt))
  {
     _initvar();
  }
   return 0;
}
void m_maichongdisplay(void)
{
	_cls();
	_lcd_setcursor(4, 5, 5, 1);//打开光标
	_PutString(0, 0, "  端口号:\n");//第2行
	_PutString(1, 0, "  测量点:\n");//第3行
	_PutString(2, 0, "脉冲属性:\n");//第2行
	_PutString(3, 0, "电表常数:\n");//第3行
	
  _gotoxy(9,0);//光标指向第0行输入
}
U8 m_maichong()//终端脉冲配置参数
{
	U8 lincnt;
	lincnt=3;
	_initvar();
	m_maichongdisplay();
  if(!string_key(lincnt))
  {
     _initvar();
  }
   return 0;
}
void m_chaobiaodisplay()
{
	_cls();
	_lcd_setcursor(4, 5, 5, 1);//打开光标
	_PutString(0, 0, "抄表间隔时间:\n");//第2行
	_gotoxy(13,0);//光标指向第0行输入
}
U8 m_chaobiao()//抄表间隔
{
	U8 lincnt;
	lincnt=0;
	_initvar();
	m_chaobiaodisplay();
  if(!string_key(lincnt))
   {
     _initvar();
   }
   return 0;
} 
void m_canshudisplay()
{
	_cls();
	_lcd_setcursor(4, 5, 5, 1);//打开光标
	_PutString(0, 0, "      测量点号:\n"); 
	_PutString(1, 0, "电压互感器倍率:\n"); 
	_PutString(2, 0, "电流互感器倍率:\n"); 
	_PutString(3, 0, "      额定电压:\n"); 
	_PutString(4, 0, "      最大电流:\n"); 
	_PutString(5, 0, "      接线方式:\n"); 
	_gotoxy(15,0);//光标指向第0行输入
}
U8 m_canshu()//测量点基本参数
{
	U8 lincnt;
	lincnt=5;
	_initvar();
	m_canshudisplay();
	if(!string_key(lincnt))
   {
     _initvar();
   }
   return 0;
}
U8 m_close()//关机 
{
	_powerdown(0);
	return 0;
} 
U8 m_command(void)
{	
	
	U8* Menu[] = {"修改参数", "招   测", "返   回"};  //菜单内容
  S16	Choice;             
	while(1)
	{
	 _cls();   
	 _PutString(1, 4, "选择操作类型\n");
	_draw_border(4,3,15,9);
  _lcd_setcursor(0, 5, 5, 1);//关闭光标
	 Choice = PopUpMenu(6,4,16,9, Menu, "123", 3, 3, 1, 0, 0, NULL, 0 );
	 m_submenuid=Choice;
	 switch(Choice)
	 {
		case 0 : return 0;
			break;
		case 1 : m_set();//修改参数
			break;
		case 2 : m_call();//招测
			break;
		case 3 :
			{
				 m_return();//返回 
				 return 0;
		  }
		default:
			return 0;			
  }
 }
}
void m_call(void)
{
 
  lenth[0]=0x31;
	lenth[1]=0x00;
	AFN=0x0a;
	C=0x4b;
  SEQ=0x60;
 
	if(m_menuid==1)//IP和APN
	{
		 m_callip();
				
  }
  if(m_menuid==2)//终端地址
   {
   		m_add();
   		
   }
  if(m_menuid==3)//虚拟专用网
   {
      m_callxuni();
    }
  if(m_menuid==4)//终端脉冲
   {
     m_callmaichong();
    }
  if(m_menuid==5)//抄表间隔
   {
   	 m_callchaobiao();
    }
  if(m_menuid==6)//测量表基本参数
   {
     m_callcanshu();
    }
   receive_data();
 }
void m_callip()
{
	U16 datacnt,auxcnt;//Data的数组长度
  datacnt=4;
 	auxcnt=0;
	Data[0]=0x00;//p0
 	Data[1]=0x00;
 	Data[2]=0x04;//DT1
 	Data[3]=0x00;//DT2
  _senddata(lenth,AFN,C,SEQ,Data,datacnt,NULL,auxcnt);
}
void m_callxuni()
{
	 U16 datacnt,auxcnt;//Data的数组长度
	 datacnt=4;
   auxcnt=0;
	 Data[0]=0x00;//p0
 	 Data[1]=0x00;
 	 Data[2]=0x80;//DT1
   Data[3]=0x01;//DT2
   _senddata(lenth,AFN,C,SEQ,Data,datacnt,NULL,auxcnt);
}
void m_callmaichong()
{
  U16 datacnt,auxcnt;//Data的数组长度
  datacnt=4;
 	auxcnt=0;
	Data[0]=0x00;//p0
  Data[1]=0x00;
 	Data[2]=0x04;//DT1
 	Data[3]=0x01;//DT2
  _senddata(lenth,AFN,C,SEQ,Data,datacnt,NULL,auxcnt);
}
void m_callchaobiao()
{
	U16 datacnt,auxcnt;//Data的数组长度
	datacnt=4;
 	auxcnt=0;
  Data[0]=0x00;//p0
  Data[1]=0x00;
	Data[2]=0x80;//DT1
  Data[3]=0x02;//DT2  
  _senddata(lenth,AFN,C,SEQ,Data,datacnt,NULL,auxcnt);
  
}
void m_callcanshu()
{
	 U16 datacnt,auxcnt;//Data的数组长度
	datacnt=4;
 	auxcnt=0;
}
void receive_data(void)
{
	U8 i=30;
  U16 ll;
 //	_save_video(2,2,19,6,1,buf,1); /* 保存屏幕区域 */
 // _draw_border(2,2,19,6); /* 画矩型框 */
  _cls();
  while(i>0)//在这段时间内不断检查是否收到数据
  {
   ll=_convertdata(100,10);//连续两个字符的最多等待时间为50ms
   if(ll==0) 
   {
    _cls();
    if(m_submenuid==2)
    {
   	  _PutString(4,3,"接收成功!\n");//第0行
      _PutString(5,3,"按任意键查看数据!\n");//第0行
      _bioskey(0);
     	if(m_menuid==1)
    	{
    	  m_ip(); 
      }
    }
    else if(m_submenuid==1)
    {
    	 _PutString(4,3,"接收成功!\n");//第0行
       _PutString(5,3,"按任意键返回!\n");//第0行
       _bioskey(0); 
    }
    break;
   }
   else 
   {
    if(i==30)
    {
      m_setip(); 
      _PutString(2,3,"发送数据.....1\n");// 显示提示文字 
    	_PutString(3,3,"接收数据.....1\n");// 显示提示文字
    }
    if(i==20)
    {
   	 _gotoxy(17,3);
   	 _putch(DEL);
   	  _putch(50);
   	 _gotoxy(17,2);
   	 _putch(DEL);
   	 _putch(50);
   	  m_setip();
    }
    if(i==10)
    {
   	 _gotoxy(17,3);
   	 _putch(DEL);
   	 _putch(51);
   	 _gotoxy(17,2);
   	 _putch(DEL);
   	 _putch(51);
   	  m_setip();
    }
    if(i==1)
    {
    	 _PutString(4,3,"接收超时....\n");//第0行
    	 _PutString(5,3,"按任意键返回!\n");//第0行
    	 _bioskey(0); 
  	 break;
    }
   }
    i--;
 }
 
 //  _restore_video(buf); /* 恢复屏幕区域 */	
}

void m_set(void)
{
 if(m_menuid==1)
 {
 	 m_ip();
 }
 if(m_menuid==2)
 {
 	 m_add();
 }
 
  _initvar();
}

void m_return(void)
{
  _initvar();
}
void m_setip(void)
{
	U8 centralip[10];//主IP
 	U16 portt=0;
 	U8  port[2];
 	U8 apn[16];
 	
 	U8 m=0;
 	U8 ad[6];
 	U8 i;
 	lenth[0]=0xd9;
	lenth[1]=0x00;
	AFN=0x04;
	C=0x4a;
  SEQ=0x70;
 	
 	for(i=0;i<10;i++)
 	{
 		centralip[i]=0;
 	}
 	for(i=0;i<16;i++)
 	{
 		apn[i]=0;
 	}
 	i=0;
 	while(i<linelen[0])
 	{
 	  while((str[0][i]!=46)&&(i<linelen[0]))
 	  {
 	  	centralip[m]=centralip[m]*10+str[0][i];
 	  	i++;
 	  }
 	  m++;
 	  i++;
 	}
 	for(i=0;i<linelen[1];i++)
 	{
 	  portt=portt*10+str[1][i];
 	}
 	i=0;
	do
  { 
  	ad[i]=portt%16;
    portt=portt/16;
    i++;
  }while (portt);
  port[0]=ad[1];
  port[0]=ad[0]+port[0]*16;
  port[1]=ad[3];
  port[1]=ad[2]+port[1]*16;
  for(i=0;i<linelen[8];i++)
  {
  	apn[i]=str[8][i];
  }
  Data[0]=0x00;//p0
  Data[1]=0x00;
  Data[2]=0x04; //DT1
  Data[3]=0x00;
  for(i=4;i<8;i++)
 	{
 		 Data[i]=centralip[i-4];
 	}
  Data[8]=port[0];
  Data[9]=port[1];
  
  for(i=10;i<14;i++)
  {
  	Data[i]=centralip[i-10];
  }
  Data[14]=port[0];
  Data[15]=port[1];
  for(i=16;i<28;i++)
  {
  	Data[i]=0x11;  	
  }
  
  for(i=0;i<linelen[8];i++)
  {
  	Data[28+i]=apn[i];
  }
  for(i=linelen[8];i<18;i++)
  {
  	Data[28+i]=0x00;
  }
  _senddata(lenth,AFN,C,SEQ,Data,46,NULL,0);
 
}  

⌨️ 快捷键说明

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