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

📄 dial_in.c

📁 c8051f020实现4个 产UART 口
💻 C
字号:
#include "all.h"


/*
60秒等待键入时限
按任何键延长60秒时限	
case 1:	    //撤防	
case 2:        //布防
case 3:        //在家布防
case 4:        // /远程监听60秒按* 退出,并嘀嘀两声
case 5:        //远程放音// 放音结束时会响嘀嘀两声
case Xing:    //* 退出
								   
*/

//远程布防声音
 void Ph_Sound_Di() ;
//远程撤防声音
void Ph_Sound_DiDi() ;

//远程在家布防声音
void Ph_Sound_DiDiDi() ;

//系统进行一次撤防(远程)
void     Ph_CeFang_Once() ;
void     Ph_BuFang_Once();
//系统进行一次在家布防(远程)
void    Ph_ZaiJia_BuFang_Once() ;


//远程监听
void     Ph_JianTing_Once();

//远程放音
void     Ph_Play20s_Once();


/**********************************************************************
**函数原型:   void   Attand_One_Jing88()  
**入口参数:    
**出口参数:   无
**返 回 值:   无
**说    明:  //远程异地操作的密码确认
//如输入 有错则响"滋滋滋" 3声,允许错15次
//如输入 正确则响"滋滋"2声音
************************************************************************/
uchar YuanCheng_Mima()  {

                   uint Phone_wait_cnt,pnum,cishu;
                   bit  isokk_b=1;

			Open_ZhaiJi_P;
			Open_NeiRelay_P;
			 os_wait2(K_TMO, 200);		
			os_wait2(K_TMO, 200);		
		       os_wait2(K_TMO, 200);		
			 Ph_Sound_DiDi();
			  En_recieve_dtmfb=1;
			
                     cishu=0;
                    
                     Phone_wait_cnt=0;    //电话等15秒
                     //       //delay 60s  延时60秒等待键入DTMF
                     Xin_dtmfb=0;
			pnum=0;		 
                     while(++Phone_wait_cnt<1500)   {   
                                os_wait2(K_TMO, 5);		
		                  if(Xin_dtmfb){							  	
		                                 Xin_dtmfb=0;
										 
						     Phone_wait_cnt=0;    //电话等15秒		
						     
						     isokk_b=1;
						     Phone_wait_cnt= 0;	 //延长60秒		 
		                                 switch(pnum++)   
		                                 {
		                                       case 0:
								     if(  Xin_dtmf!=(Para_all_True.Mima[0]-'0')  )	 {
                                                                          isokk_b=0;
								      }		   	 

							     break;	
								case 1:
									 if(  Xin_dtmf!=(Para_all_True.Mima[1]-'0')  )	 {
                                                                          isokk_b=0;
								      }	

							     break;	
								  case 2:
								      if(  Xin_dtmf!=(Para_all_True.Mima[2]-'0')  )	 {
                                                                          isokk_b=0;
								      }	

							     break;	
								  case 3:
								  	if(  Xin_dtmf!=(Para_all_True.Mima[3]-'0')  )	 {
                                                                          isokk_b=0;
								      }	

							     break;	
								  case 4:
								  	 if(  Xin_dtmf!=(Para_all_True.Mima[4]-'0')  )	 {
                                                                           isokk_b=0;
								      }	

							     break;	
								  case 5:
								  	 if(  Xin_dtmf!=(Para_all_True.Mima[5]-'0')  )	 {
                                                                           isokk_b=0;
								      }	
									else  {   //密码输入 正确 
                                                                          En_recieve_dtmfb=0;
										    Ph_Sound_DiDi();		  
                                                                           return(1);
								} 		

							     break;	
								 case Xing:  //退出
								 	   Phone_wait_cnt=30000;
									 break;	

								break;
								default:
									  pnum=0;	

							     break;	

		                                }
                                             if( isokk_b==0)  {
								    if(++cishu>=15)  {
                                                                    //连续5次错误则挂机退出
                                                                    Phone_wait_cnt=30000;
										break;							
								  }
								  pnum=0;	
								 Ph_Sound_DiDiDi();
								  	
						    }						  
								   
		                  	}
                     }
			if(Phone_wait_cnt>=1500)  {
                               Ph_Sound_DiDi();
				   Close_ZhaiJi_P;
			           Close_NeiRelay_P;
			}
			 En_recieve_dtmfb=0;
			 return(0);
			
			 
 }





/**********************************************************************
**函数原型:   void   Attand_One_Jing88()  
**入口参数:    
**出口参数:   无
**返 回 值:   无
**说    明:  //远程异地操作
************************************************************************/
  void Dial_In_attand(uint T_Shixian)   {
  
                     uint Phone_wait_cnt;


			Open_ZhaiJi_P;
			Open_NeiRelay_P;
			
         
                     En_recieve_dtmfb=1;
                     Phone_wait_cnt=0;    //电话等15秒
                     //       //delay 60s  延时60秒等待键入DTMF
                     Xin_dtmfb=0;
                     while(++Phone_wait_cnt<T_Shixian)   {   
                                os_wait2(K_TMO, 5);		
		                  if(Xin_dtmfb){							  	
		                                 Xin_dtmfb=0;
						     Phone_wait_cnt= 0;	 //延长60秒		 
		                                 switch(Xin_dtmf)   
		                                 {
		                                            case 1:		//撤防	
										 Ph_CeFang_Once() ;
		                                            break;     
								  case 2:   //布防
										 Ph_BuFang_Once();		
		                                        
		                                            break;     
								  case 3:   //在家布防
								   
										  //系统进行一次在家布防(远程)
										 Ph_ZaiJia_BuFang_Once() ;		
		                                        
		                                            break;     
								  case 4:     
                                                                     // /远程监听60秒按* 退出,并嘀嘀两声
										  Ph_JianTing_Once();			
		                                        
		                                             break;     
								   case 5:   //听录音内容
                                                                   //远程放音// 放音结束时会响嘀嘀两声
										 Ph_Play20s_Once();		
		                                        
		                                             break;    
								   case Xing:   //* 退出

										Phone_wait_cnt=T_Shixian;	
		                                        
		                                            break;     
								  default:
									 			
		                                        
		                                           break;     
		                                 }
						     				  
		                     }
			  }        

			En_recieve_dtmfb=0;		    
		       Xin_dtmfb=0;		  
			Close_NeiRelay_P;
			Close_ZhaiJi_P;
		

 }


                
/**********************************************************************
**函数原型:   void   Attand_One_Jing88()  
**入口参数:    
**出口参数:   无
**返 回 值:   无
**说    明:  //远程监听按* 退出,并嘀嘀两声
************************************************************************/
 void     Ph_JianTing_Once(){
               uint i;
                                   
                  Close_JianJing_P;    //打开监听
				   
                   for(i=0;i<6000;i++)   {              // 延时60秒如有*   则退出 
                                 os_wait2(K_TMO, 5);	
									if(Xin_dtmfb&&Xin_dtmf==Xing){
                                                Xin_dtmfb=0;
					                              break;

					                  }
		     }
                   
                   Ph_Sound_DiDi() ;
				  
                   Open_JianJing_P;   //关监听

}


/**********************************************************************
**函数原型:   void   Attand_One_Jing88()  
**入口参数:    
**出口参数:   无
**返 回 值:   无
**说    明:  //远程放音// 放音结束时会响嘀嘀两声
************************************************************************/
 void     Ph_Play20s_Once(){
                   uint i;

                   Close_En386_P;  
                   Play_isd1420()  ; 								   	
                   for(i=0;i<960;i++)   {              // 延时10秒 
                                 os_wait2(K_TMO, 5);				  
		     }
                   Close_isd1420();       //   close放音
                   
                   Ph_Sound_DiDi() ;	   

}











//==========================================================	



/**********************************************************************
**函数原型:   void   Attand_One_Jing88()  
**入口参数:    
**出口参数:   无
**返 回 值:   无
**说    明: 
************************************************************************/
//系统进行一次撤防(远程)
void     Ph_CeFang_Once()  {
  		   uchar i;

                 Spk_cnt=0;   //如报警警号响则停止响
		   Close_Spkk_P; //如报警警号响则停止响
		   
                 
		   Para_all_True.Work_Mode=0;
		    Ph_Sound_DiDi();
			

		       //得到权限
			 while(KEY_TX_Right_B==0 )     os_wait2(K_TMO,2);
			 KEY_TX_Right_B=0;
			 DaBao_JTX_0x24_And_Send(52, &i, 0);  //52	发生撤防
			 os_wait2(K_TMO,200);
			 KEY_TX_Right_B=1;										 
		   //放弃到权限

                
		 


}

/**********************************************************************
**函数原型:   void   Attand_One_Jing88()  
**入口参数:    
**出口参数:   无
**返 回 值:   无
**说    明: 
************************************************************************/
//系统进行一次布防(远程)
void    Ph_BuFang_Once()  {

          uchar i;

            
		 Para_all_True.Work_Mode=1;
		 
               Ph_Sound_Di();
		 

			 //得到权限
		 while(KEY_TX_Right_B==0 )     os_wait2(K_TMO,2);
		 KEY_TX_Right_B=0;
		 DaBao_JTX_0x24_And_Send(50, &i, 0); //50	 发生布防
		 os_wait2(K_TMO,200);
		 KEY_TX_Right_B=1;										 
		 //放弃到权限
             


}

/**********************************************************************
**函数原型:   void   Attand_One_Jing88()  
**入口参数:    
**出口参数:   无
**返 回 值:   无
**说    明: 
************************************************************************/
//系统进行一次在家布防(远程)
void    Ph_ZaiJia_BuFang_Once()  {

  			    uchar i;

            
		 Para_all_True.Work_Mode=2;

		  Ph_Sound_DiDiDi() ;
		  
                //51	 发生在家布防
                     //得到权限
		 while(KEY_TX_Right_B==0 )     os_wait2(K_TMO,2);
		 KEY_TX_Right_B=0;
		 DaBao_JTX_0x24_And_Send(51, &i, 0);  //51	 发生在家布防
		 os_wait2(K_TMO,200);
		 KEY_TX_Right_B=1;										 
	        //放弃到权限	
             
                     

}

/**********************************************************************
**函数原型:   void   Attand_One_Jing88()  
**入口参数:    
**出口参数:   无
**返 回 值:   无
**说    明: 
************************************************************************/
//远程布防声音
 void Ph_Sound_Di()  { 
        EN_PWM;
        os_wait2(K_TMO, 110);	   
	    os_wait2(K_TMO, 110);	 
		   os_wait2(K_TMO, 110);	 
		      
	  DIS_PWM;
     os_wait2(K_TMO, 200);	 

 


  }

/**********************************************************************
**函数原型:   void   Attand_One_Jing88()  
**入口参数:    
**出口参数:   无
**返 回 值:   无
**说    明: 
************************************************************************/
//远程撤防声音
void Ph_Sound_DiDi()  {
  

	     EN_PWM;
     os_wait2(K_TMO, 110);	   
	  DIS_PWM;
     os_wait2(K_TMO, 110);	 
	 
  	     EN_PWM;
     os_wait2(K_TMO, 110);	   
	  DIS_PWM;
     os_wait2(K_TMO, 110);	 


  }

/**********************************************************************
**函数原型:   void   Attand_One_Jing88()  
**入口参数:    
**出口参数:   无
**返 回 值:   无
**说    明: 
************************************************************************/
//远程在家布防声音
void Ph_Sound_DiDiDi()  {
       EN_PWM;
     os_wait2(K_TMO, 110);	   
	  DIS_PWM;
     os_wait2(K_TMO, 110);	 


	     EN_PWM;
     os_wait2(K_TMO, 110);	   
	  DIS_PWM;
     os_wait2(K_TMO, 110);	 
	 
  	     EN_PWM;
     os_wait2(K_TMO, 110);	   
	  DIS_PWM;
     os_wait2(K_TMO, 110);	 


  }

⌨️ 快捷键说明

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