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

📄 新建 文本文档.txt

📁 关于来电识别的程序
💻 TXT
字号:
SeriMonitor () _task_ 1 { //串口数据处理
  char i;
  while (1) { /* endless loop */ 
     while(seriBuffer.head==seriBuffer.tail)
	 {
	 watchdogb=0;
	 os_switch_task(); }
	 i=seriBuffer.tail;
     os_wait (K_TMO, 20,0);
	 while(i!=seriBuffer.tail)	//说明还没发完
	 {
        i=seriBuffer.tail;
		
        os_wait (K_TMO, 40,0);
	 }
	 if(seriBuffer.head!=seriBuffer.tail)	 //数据发完
	 {   
	     if(is_inf_valid()){			   //验证校验码
            ModemConnected=1;
		    while(CommandProcessing)os_switch_task();
			CommandProcessing=1;
			if(seriBuffer.serData[1]==0x06)SendVoltageID=seriBuffer.serData[3];		//获取当前电压行放电信息,SendVoltageID电池ID号
            ProcessCommand(seriBuffer.serData[1]);	  //执行上位机发下来的命令
			CommandProcessing=0;
		 }else{
		    if(CID_Ident==3)ModemConnected=0;
		    if((CID_Ident==3)&&((seriBuffer.tail<seriBuffer.head)||(seriBuffer.tail-seriBuffer.head>8))){
               ES=0;
			   for(i=0;i<=TelCount;i++){
			      // if((TelNumberLength>8)||(TelNumberLength<4))TelNumberLength=8;
                   Read_EEPRom_string(ComTelNumberAddress+i*8,TelNumberLength);
			       if(getSeriString(tmpchar)){//判断调制解调器是否接通.
						CID_Ident=10;
						
						break;
		    		}
				   }
  /*             if(CID_Ident==10){
			   P2_2=0;
			    os_wait (K_TMO, 80,0);
               P2_2=1;}
                else{
			    P2_2=0;
			    os_wait (K_TMO, 40,0);
                P2_2=1;
			    os_wait (K_TMO, 40,0);
			    P2_2=0;
			    os_wait (K_TMO, 40,0);
                P2_2=1;
			   }           */
			   if(CID_Ident==10){
			   
			   putstring("ATA\r\n");
			   }
               CID_Ident=0;
               ES=1;
			   ModemConnected=0;
			}
			CID_Ident=0;
			seriBuffer.head=seriBuffer.tail+1;
			seriBuffer.head = seriBuffer.head & 0x0f;
		    if(getSeriString("CARRIE")){//判断调制解调器是否接通.
				ModemConnected=0;
		    }
			seriBuffer.head=seriBuffer.tail+1;
			seriBuffer.head = seriBuffer.head & 0x0f;
		    if(getSeriString("ONNEC")){//判断调制解调器是否接通.
				ModemConnected=1;
				
		    }
			seriBuffer.head=seriBuffer.tail+1;
			seriBuffer.head = seriBuffer.head & 0x0f;
		    if(getSeriString("2400")){//判断调制解调器是否接通.
				ModemConnected=1;
				
		    }
			seriBuffer.head=seriBuffer.tail+1;
			seriBuffer.head = seriBuffer.head & 0x0f;   
			if(getSeriString("BUSY"))//判断调制解调器是否断开.
			{    	ModemConnected=0;
					
                                                  

			}
			seriBuffer.head=seriBuffer.tail+1;
			seriBuffer.head = seriBuffer.head & 0x0f;
			if(getSeriString("CID"))//判断调制解调器是否断开.
			{    	ModemConnected=0;
				
                                                    

			}
			seriBuffer.head=seriBuffer.tail+1;
			seriBuffer.head = seriBuffer.head & 0x0f;
	    	if(getSeriString("+++ATH"))//判断调制解调器是否断开.
			{    	ModemConnected=0;
				
                                             

			}
		   
         }
	 }
	 seriBuffer.head=0;
	 seriBuffer.tail=0;
	 for (i=0;i<15;i++) seriBuffer.serData[i]=0;
  } 
} 

//串口接收程序
serial() interrupt 4 using 2{ 
        
        if(RI){								//RI,TI在复位后为0。
		   tmp_char=SBUF;
		   if(CID_Ident==2)
			      if(tmp_char==0x44)  //读取停电时间
					  CID_Ident=3;			   
			      else 
			   		  CID_Ident=0;
		   if(CID_Ident==1)
		       if(tmp_char==0x49)	//连续上报电流累积和
				     CID_Ident=2;			   
		       else
		             CID_Ident=0;
		   if(CID_Ident==0)
		       if(tmp_char==0x43)    //读取电话码位数
	                 CID_Ident=1;
		       
		   if (CID_Ident!=3){
		   		if(seriBuffer.tail<15)
					seriBuffer.serData[seriBuffer.tail++] =  tmp_char;
			    seriBuffer.head=0; 
		                     }else
		   else{
                 serIn();
		      }

		   RI=0;  
		} 
		if(TI){
			TI=0;
			if(SendPointer<=SendBufEnd){
				SBUF=SendBuf[SendPointer++];
				
			}else
			   
			       SerialPortAccessing=0;
				   
			   
		}
		//ET0=1;
 }
void serIn(void){     
     seriBuffer.serData[seriBuffer.tail++] =  tmp_char;
     seriBuffer.tail = seriBuffer.tail & 0x0f;
	 if(seriBuffer.tail<=seriBuffer.head)seriBuffer.head++;
     seriBuffer.head = seriBuffer.head & 0x0f;
}

⌨️ 快捷键说明

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