|
用单片机和SIM300做的保护器,当出现异常即自动向管理者手机发短信,里面存有两个号码,但现在奇怪的是每次发短信第一个号码总是收到两条,第二个号码收到一条,程序如下:
void send_Tall(void)
{
uchar i,j;
ulong k;
for(i=0;i<2*tablesize-1;i=i+2)
{
k=Teletable;
callnum[0]=k/10;
callnum[1]=k%10;
k=Teletable[i+1];
for(j=0;j<9;j++)
{
callnum[10-j]=k%10;
k=k/10;
}
send_getnum();//转换电话号码的格式
send_Tfault();//向每个里面都发一条消息
delay1S();
delay1S();
delay1S();
}
}
void send_Tfault(void)
{
uchar i;
uint time;
time=0;
diskeyint( ); //禁止按键中断
flag_sending1=0;
flag_sending2=0;
flag_sending=1;
flag_newmess=0;
flag_receiving=0;
RX_bit=RX_Data;
do
{
time++;
send_ATorder(TX_ATEsc);
send_ATorder(TX_Irmsend);//发送命令部分
delay1S();
for(i=0;i<10;i++)//发送前缀
{
while((IFG1&UTXIFG0)==0);//是否允许发送
TXBUF0=TX_ATtext1;// }
for(i=0;i<12;i++)//发送电话号码
{
while((IFG1&UTXIFG0)==0);
TXBUF0=Telenum;//电话号码
}
for(i=0;i<37;i++)
{
while((IFG1&UTXIFG0)==0);
TXBUF0=Content_Tfault;//发送内容
}
for(i=0;i<30;i++)
{
delay1S();
}
}
while(flag_sending2==0&&time<10);
enkeyint();//消息发送完毕以后开按键中断
flag_sending=0;
flag_sending1=0;
flag_sending2=0;
send_ATorder(TX_ATEsc);
}
|
|