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

📄 yc.c

📁 msp430为核心
💻 C
📖 第 1 页 / 共 5 页
字号:
     else if(sms_type==SMS_UI_FAULT)
	         {
	         	if (asp_rdp==0) rdp=30;
	         	else rdp=asp_rdp-1;
	         		
	         	if(asp_buf[rdp]==1)       /*压力过高报警*/
	         	  {
		         	  	l=12+2+psname_leng;
		         	  	s=l+15;
	         	  }	         	  
	        else if(asp_buf[rdp]==2)     /*加速时过电流*/
	         	  {
		         	  	l=12+2+psname_leng;
		         	  	s=l+15;
	         	  }	         	 
	        else if(asp_buf[rdp]==3)     /*散热片温度高*/
	         	  {
		         	  	l=12+2+psname_leng;
		         	  	s=l+15;
	         	  }	         	  
	        else if(asp_buf[rdp]==4)     /*系统异常报警*/
	         	  {
		         	  	l=12+2+psname_leng;
		         	  	s=l+15;
	         	  } 
	         }
	   else if(sms_type==SMS_POWER_OFF)
			   	 {
			   	  l=30+2+psname_leng;
	         	s=l+15;
			   	 }
		 else if(sms_type==SMS_SIMULAT_DAT)
					 {
					 	for(i=0;i<4;i++)
					  	{if((dc_name[i*2]==0x00)||(dc_name[i*2]==0xff))
					  	 	  {	head_dc1_len=i*2;
					  	 	   	break;}
					  	 else
					  	 	  {head_dc1_len=8;}	  
					  	}
					  	
					  for(i=0;i<4;i++)
					  	{if((dc_name[i*2+8]==0x00)||(dc_name[i*2+8]==0xff))
					  	 	  {	head_dc2_len=i*2;
					  	 	   	break;}
					  	 else
					  	 	  {head_dc2_len=8;}	  
					  	}
					  											
        		if(head_dc1_len!=0)
        		   dc1_l=head_dc1_len+14;
        		   //dc1_l=head_dc1_len+16;
        		else
        			 dc1_l=head_dc1_len+20;  	
        			// dc1_l=head_dc1_len+22;           	
	         	
	         	if(head_dc2_len!=0)
        		   dc2_1=head_dc2_len+14;
        		   //dc2_1=head_dc2_len+16;

        		else
        			 dc2_1=head_dc2_len+20;
        			 //dc2_1=head_dc2_len+22;
					 
					  l=dc1_l+dc2_1+psname_leng;
					  s=l+15;
					 }	  	   	      
   			
		tr=&com1_tx_buf[0];
		*tr++ = 'A';
		*tr++ = 'T';
		*tr++ = '+';
		*tr++ = 'C';
		*tr++ = 'M';
		*tr++ = 'G';
		*tr++ = 'S';
		*tr++ = '='; 
		if(s<10)
			{
				*tr++=(s+48);  /***decl-->asci(52)转换成asci码**/			
				*tr=13;
				len=10;
		   }
		else if(s>=10 && s<100)
			{
				*tr++=(s/10+48);  /***decl-->asci(52)**/
				*tr++=(s%10+48);  /****decl-->asci**/
				*tr=13;
				len=11;
		   }
		 else
			{
				*tr++=s/100+48;
				*tr++=s%100/10+48;
				*tr++=s%100%10+48;
				*tr=13;
				len=12;
		   }
			__disable_interrupt();  
			com_tx_point[1]=0;     
			com_tx_count[1]=len;
			__enable_interrupt();
	
}

void GsmSendInfo()
{INT8U i,n,rdp,udl; 
 INT8U *pt,len,k;
 INT8U ps_leng,yxname_len,yxname_udl;
 INT16U m,ascll_num;
 INT16U value;
 INT8U temp_name[17];
 INT8U dc1_temp[17],dc2_temp[17];
 INT8U dc1_len,dc2_len,dc1_udllen,dc2_udllen,dc1_ptlen,dc2_ptlen;
 INT16U dc1_value,dc2_value;
 float value_temp;
 INT8U tran_len;
    
    yxname_len=0;
    tran_len=0;
    dc1_len=0;
    dc2_len=0;
    dc1_udllen=0;
    dc2_udllen=0;
    dc1_ptlen=0;
    dc2_ptlen=0;
    ps_leng=0;
    mandu_dc1=0;
    mandu_dc2=0;
    for(i=0;i<16;i++)
       temp_name[i]=0;
    for(i=0;i<16;i++)
       dc1_temp[i]=0;
    for(i=0;i<16;i++)
       dc2_temp[i]=0;   
     
    if(((dc1_mandu[0]==0x00)&&(dc1_mandu[1]==0x00))||((dc1_mandu[0]==0xff)&&(dc1_mandu[1]==0xff)))
    	 mandu_dc1=1;
    else
    	{
    	if(dc1_mandu[1]!=0)	
  		   mandu_dc1=((dc1_mandu[0]-0x30)*10)+(dc1_mandu[1]-0x30);
  		else
  			 mandu_dc1=dc1_mandu[0]-0x30;  
 			 mandu1=mandu_dc1;
 			 mandu_dc1=(mandu_dc1/10)*2;
 			 }
 			 
    if(((dc2_mandu[0]==0x00)&&(dc2_mandu[1]==0x00))||((dc2_mandu[0]==0xff)&&(dc2_mandu[1]==0xff)))
    	 mandu_dc2=1;
    else
    	{	
    	if(dc2_mandu[1]!=0)	 
        mandu_dc2=((dc2_mandu[0]-0x30)*10)+(dc2_mandu[1]-0x30);
      else
      	mandu_dc2=dc2_mandu[0]-0x30;  
      mandu2=mandu_dc2;
      mandu_dc2=(mandu_dc2/10)*2;
      }
       
    com_tx_time[1]=2000;
  /*发送短信的固定头帧*/
    for (i=0;i<12;i++) com1_tx_buf[i]=mes1[i];
	/*** 手机号的打包  ***/
    for (i=0;i<12;i++) com1_tx_buf[12+i]=phone[i];
	/**发送短信的固定尾帧*/
    for (i=0;i<6;i++) com1_tx_buf[24+i]=mes2[i]; 		
  	/*模块的位置名称*/  
  	
  	for(i=0;i<4;i++)
  	{if(sms_name[i*2]==0)
  	 	  {	ps_name[i*4+1]='\0';
  	 	  	tran_len=i*2;
  	 	  	break;
  	 	  }
  	 else
  	 	  {ps_name[16]='\0';
  	 	  	tran_len=8;
  	 	  	}	  
  	}//判断sms_name中有效的字节长度
  	 test_tran_len=tran_len;	
  	for(i=0;i<tran_len;i++)
			{
			 ascll_num=hex_asc(sms_name[i]);
			 ps_name[i*2]=ascll_num>>8;
			 ps_name[i*2+1]=ascll_num&0x00ff;
			}
  	ps_leng=strlen(ps_name);//转换成ascll码
  	test_pslen=ps_leng;
  	/*  短信的全部长度的16进制 一个汉字,数字,标点加2 */
     if (sms_type==SMS_YX_BY)               /*遥信变位的中文短信的内容*/
	     {
	     	pt=&com1_tx_buf[30];
	     	if (soe_rdp==0) rdp=30;
	        	else rdp=soe_rdp-1;
	        	k = soe_buf[rdp].sta_point & 0xff;
	        	m = soe_buf[rdp].sta_point & 0x8000;
	        	if (k==0) 
			        	{/* 遥信1为“交流失电”或“交流恢复” */ 
			        		   
	                   if(ps_leng==0)udl=0x0a;
	                   else if(ps_leng==4)udl=(0x0a+0x02);
	                   else if(ps_leng==8)udl=(0x0a+0x04);
	                   else if(ps_leng==12)udl=(0x0a+0x06);
	                   else if(ps_leng==16)udl=(0x0a+0x08);
	                   	else udl=0x0a;
	                   ascll_num=hex_asc(udl);
	                   	
	                   *pt++=ascll_num>>8; 
	                   *pt++=ascll_num&0x00ff;     /*短信的全部长度的16进制 一个汉字,数字,标点加2 */			
	                   for(n=0;n<8;n++) *pt++=jiaoliu[n];
	                   if (m==0x8000 )
	                   	 for(n=0;n<8;n++) *pt++=shidian[n];   
	                   else 
	                   	 for(n=0;n<8;n++) *pt++=huifu[n];
	                   for(n=0;n<4;n++) *pt++=enter[n];
	                   if(ps_leng!=0)
	                      for(n=0;n<ps_leng;n++)*pt++=ps_name[n];  
	                   *pt=26;   //^z 短信结束符
	                   len=23+ps_leng;
				      	                
				        }
		        else if (k==1) 
			        	{/* 遥信2为“机箱门开”或“机箱门关” */                     
				      	     if(ps_leng==0)udl=0x0a;
	                   else if(ps_leng==4)udl=0x0a+0x02;
	                   else if(ps_leng==8)udl=0x0a+0x04;
	                   else if(ps_leng==12)udl=0x0a+0x06;
	                   else if(ps_leng==16)udl=0x0a+0x08;
	                   ascll_num=hex_asc(udl);
	                   	
	                   *pt++=ascll_num>>8; 
	                   *pt++=ascll_num&0x00ff;     /*短信的全部长度的16进制 一个汉字,数字,标点加2 */			
	                   for(n=0;n<12;n++) *pt++=jixiangmen[n];
	                   if (m==0x8000 )
	                      for(n=0;n<4;n++) *pt++=kai[n];        
	                   else  
	                      for(n=0;n<4;n++) *pt++=guan[n];
	                   for(n=0;n<4;n++) *pt++=enter[n];
	                   if(ps_leng!=0)
	                      for(n=0;n<ps_leng;n++)*pt++=ps_name[n];  
	                   *pt=26;   //^z 短信结束符
	                   len=23+ps_leng;      
				        }
			      else if(k==2)  
			        	{//遥信3
				      	     for(i=0;i<4;i++)
									  	{if((yx_name[i*2]==0x00)||(yx_name[i*2]==0xff))
									  	 	  {temp_name[i*4+1]='\0';
									  	 	  	tran_len=i*2;
									  	 	  	break;
									  	 	  	}
									  	 else
									  	 	  {temp_name[16]='\0';
									  	 	  	tran_len=8;}	  
									  	}
				      	     for(i=0;i<tran_len;i++)
											{
											 ascll_num=hex_asc(yx_name[i]);
											 temp_name[i*2]=ascll_num>>8;
											 temp_name[i*2+1]=ascll_num&0x00ff;
											}
								  	 yxname_len=strlen(temp_name);
				      	     if(yxname_len==0)
				      	     	 {
						      	     if(ps_leng==0)udl=0x0a;
			                   else if(ps_leng==4)udl=0x0a+0x02;
			                   else if(ps_leng==8)udl=0x0a+0x04;
			                   else if(ps_leng==12)udl=0x0a+0x06;
			                   else if(ps_leng==16)udl=0x0a+0x08;
		                     ascll_num=hex_asc(udl);
			                   	
			                   *pt++=ascll_num>>8; 
			                   *pt++=ascll_num&0x00ff;     /*短信的全部长度的16进制 一个汉字,数字,标点加2 */			
			                   for(n=0;n<8;n++) *pt++=yaoxin[n];
			                   
			                   *pt++=48;//0的ascll码
								         *pt++=48;//0的ascll码
								         *pt++=51;//3的ascll码
								         *pt++=k+1+48;//遥信序号的ascll码

			                   if(m==0x8000 )
			                     for(n=0;n<4;n++) *pt++=he[n];        
			                   else  
			                     for(n=0;n<4;n++) *pt++=fen[n];
			                   for(n=0;n<4;n++) *pt++=enter[n];
		                     if(ps_leng!=0)
	                          for(n=0;n<ps_leng;n++)*pt++=ps_name[n];
		                     *pt=26;   // ^z 短信结束符
			                   len=23+ps_leng; 
	                      }
	                   else
	                     {
	                     yxname_udl=yxname_len>>1;	
	                     if(ps_leng==0)udl=yxname_udl+0x06;
		                   else if(ps_leng==4)udl=yxname_udl+0x02+0x06;
		                   else if(ps_leng==8)udl=yxname_udl+0x04+0x06;
		                   else if(ps_leng==12)udl=yxname_udl+0x06+0x06;
		                   else if(ps_leng==16)udl=yxname_udl+0x08+0x06;
	                     ascll_num=hex_asc(udl);
		                   	
		                   *pt++=ascll_num>>8; 
		                   *pt++=ascll_num&0x00ff;     /*短信的全部长度的16进制 一个汉字,数字,标点加2 */			
		                   for(n=0;n<yxname_len;n++) *pt++=temp_name[n];
		                   for(n=0;n<4;n++) *pt++=enter[n];
		                   
		                   if (m==0x8000 )
		                     for(n=0;n<4;n++) *pt++=he[n];        
		                   else  
		                     for(n=0;n<4;n++) *pt++=fen[n];
		                   
		                   for(n=0;n<4;n++) *pt++=enter[n];
		                   if(ps_leng!=0)
	                        for(n=0;n<ps_leng;n++)*pt++=ps_name[n];
		                   *pt=26;   //^z 短信结束符
		                   len=15+ps_leng+yxname_len;//发送缓冲区的长度
	                     }        
				        }
				    else if(k==3)  
			        	{//遥信4            
				      	    for(i=0;i<4;i++)
									  	{if((yx_name[i*2+8]==0x00)||(yx_name[i*2+8]==0xff))
									  	 	  {temp_name[i*4+1]='\0';
									  	 	  	tran_len=i*2;
									  	 	  	break;
									  	 	  	}
									  	 else
									  	 	  {temp_name[16]='\0';
									  	 	  	tran_len=8;}	  
									  	}
				      	     for(i=0;i<tran_len;i++)
											{
											 ascll_num=hex_asc(yx_name[i+8]);
											 temp_name[i*2]=ascll_num>>8;
											 temp_name[i*2+1]=ascll_num&0x00ff;
											}
								  	 yxname_len=strlen(temp_name);
				      	     if(yxname_len==0)
				      	     	 {
						      	     if(ps_leng==0)udl=0x0a;
			                   else if(ps_leng==4)udl=0x0a+0x02;
			                   else if(ps_leng==8)udl=0x0a+0x04;
			                   else if(ps_leng==12)udl=0x0a+0x06;
			                   else if(ps_leng==16)udl=0x0a+0x08;
		                     ascll_num=hex_asc(udl);
			                   	
			                   *pt++=ascll_num>>8; 
			                   *pt++=ascll_num&0x00ff;     /*短信的全部长度的16进制 一个汉字,数字,标点加2 */			
			                   for(n=0;n<8;n++) *pt++=yaoxin[n];
			                   
			                   *pt++=48;//0的ascll码
								         *pt++=48;//0的ascll码
								         *pt++=51;//3的ascll码
								         *pt++=k+1+48;//遥信序号的ascll码

			                   if(m==0x8000 )
			                     for(n=0;n<4;n++) *pt++=he[n];        
			                   else  
			                     for(n=0;n<4;n++) *pt++=fen[n];
			                   for(n=0;n<4;n++) *pt++=enter[n];
		                     if(ps_leng!=0)
	                          for(n=0;n<ps_leng;n++)*pt++=ps_name[n];
		                     *pt=26;   // ^z 短信结束符
			                   len=23+ps_leng; 
	                      }
	                   else
	                     {
	                     yxname_udl=yxname_len>>1;	
	                     if(ps_leng==0)udl=yxname_udl+0x06;
		                   else if(ps_leng==4)udl=yxname_udl+0x02+0x06;
		                   else if(ps_leng==8)udl=yxname_udl+0x04+0x06;
		                   else if(ps_leng==12)udl=yxname_udl+0x06+0x06;
		                   else if(ps_leng==16)udl=yxname_udl+0x08+0x06;
	                     ascll_num=hex_asc(udl);
		                   	
		                   *pt++=ascll_num>>8; 
		                   *pt++=ascll_num&0x00ff;     /*短信的全部长度的16进制 一个汉字,数字,标点加2 */			
		                   for(n=0;n<yxname_len;n++) *pt++=temp_name[n];
		                   for(n=0;n<4;n++) *pt++=enter[n];
		                   
		                   if (m==0x8000 )
		                     for(n=0;n<4;n++) *pt++=he[n];        
		                   else  
		                     for(n=0;n<4;n++) *pt++=fen[n];
		                   
		                   for(n=0;n<4;n++) *pt++=enter[n];
		                   if(ps_leng!=0)
	                        for(n=0;n<ps_leng;n++)*pt++=ps_name[n];
		                   *pt=26;   //^z 短信结束符
		                   len=15+ps_leng+yxname_len;//发送缓冲区的长度
	                     }    
				        }
				    else if(k==4)  
			        	{//遥信5
				      	    for(i=0;i<4;i++)
									  	{if((yx_name[i*2+16]==0x00)||(yx_name[i*2+16]==0xff))
									  	 	  {temp_name[i*4+1]='\0';
									  	 	  	tran_len=i*2;
									  	 	  	break;
									  	 	  	}
									  	 else
									  	 	  {temp_name[16]='\0';
									  	 	  	tran_len=8;}	  
									  	}
				      	     for(i=0;i<tran_len;i++)
											{
											 ascll_num=hex_asc(yx_name[i+16]);
											 temp_name[i*2]=ascll_num>>8;
											 temp_name[i*2+1]=ascll_num&0x00ff;
											}
								  	 yxname_len=strlen(temp_name);
				      	     if(yxname_len==0)
				      	     	 {
						      	     if(ps_leng==0)udl=0x0a;
			                   else if(ps_leng==4)udl=0x0a+0x02;
			                   else if(ps_leng==8)udl=0x0a+0x04;
			                   else if(ps_leng==12)udl=0x0a+0x06;
			                   else if(ps_leng==16)udl=0x0a+0x08;
		                     ascll_num=hex_asc(udl);
			                   	
			                   *pt++=ascll_num>>8; 
			                   *pt++=ascll_num&0x00ff;     /*短信的全部长度的16进制 一个汉字,数字,标点加2 */			
			                   for(n=0;n<8;n++) *pt++=yaoxin[n];
			                   
			                   *pt++=48;//0的ascll码
								         *pt++=48;//0的ascll码
								         *pt++=51;//3的ascll码
								         *pt++=k+1+48;//遥信序号的ascll码

			                   if(m==0x8000 )
			                     for(n=0;n<4;n++) *pt++=he[n];        
			                   else  
			                     for(n=0;n<4;n++) *pt++=fen[n];
			                   for(n=0;n<4;n++) *pt++=enter[n];
		                     if(ps_leng!=0)
	                          for(n=0;n<ps_leng;n++)*pt++=ps_name[n];
		                     *pt=26;   // ^z 短信结束符
			                   len=23+ps_leng; 
	                      }
	                   else
	                     {
	                     yxname_udl=yxname_len>>1;	

⌨️ 快捷键说明

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