📄 yc.c
字号:
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 + -