|
发表于 2012-11-9 19:54:06
|
显示全部楼层
uchar call(uchar *phone)
{ uchar i=0x00,time;
Delay_ms(100);
sendstring(AT);
Delay_ms(1000);
clean_receive_buf();
sendstr("ATD",3);Delay_ms(5);
sendstr("+86",3);Delay_ms(5);
sendstr(phone,11);
Delay_ms(15);
sendchar(';');
send_enter();
Delay_ms(400);
time=0x00;
while(i==0x00)
{Delay_ms(500);time++;
if(receive_buf[2]=='O'&&receive_buf[8]=='N') {i=0xff;}
if(receive_buf[2]=='N') {i=0x0f;}
if(time>150) {break;}
}
clean_receive_buf();
Delay_ms(100);
if(i==0x0f)
{clean_receive_buf();
sendstring("AT+CEER");Delay_ms(1000);
if(receive_buf[12]!='9'||(time>130))
{i=0x00;}
}
Delay_ms(1000);
return i;
}
oid send_message(uchar *buf,uchar *phone)
{uchar t[2],m_center[11],length,i;
Delay_ms(500);
sendstring("AT+CMGF=0");//unicode
Delay_ms(1000);
clean_receive_buf();
sendstring("AT+CSCA?");//获取短信中心
Delay_ms(1000);
for(i=0;i<11;i++) {m_center[i]=receive_buf[13+i];}
length=strlen(buf);
t[1]=((length+15)%10)+0x30;
t[0]=((length+15)/10)+0x30; //十位
sendstr("AT+CMGS=",8);
Delay_ms(50);
sendstr(t,2);send_enter();
Delay_ms(500);
sendstr("089168",6);
for(i=0;i<10;i+=2)
{sendchar(m_center[i+1]);
sendchar(m_center[i]);
}
sendchar('F');
sendchar(m_center[10]);
sendstr("11000D9168",10);
for(i=0;i<10;i+=2)
{sendchar(phone[i+1]);
sendchar(phone[i]);
}
sendchar('F');
sendchar(phone[10]);
sendstr("000800",6);
if((length%16)>=10) {t[1]=(length%16)+(0x41-0x0A);}
else t[1]=(length%16)+0x30;
t[0]=(length/16)+0x30;
sendstr(t,2);Delay_ms(10);
while(*buf)
{
if((*buf/16)>=10) {sendchar(*buf/16+0x41-0x0A);}
else sendchar(*buf/16+0x30);
if((*buf%16)>=10) {sendchar(*buf%16+0x41-0x0A);}
else sendchar(*buf%16+0x30);
buf++;
}
clean_receive_buf();
sendchar(0X1A);send_enter();
Delay_ms(4000);
while(receive_buf[15]!='O');
Delay_ms(1500);
sendstring(AT);
Delay_ms(1000);
sendstring(AT_CMGF);//设置短信的格式为text格式
Delay_ms(1000);
}
void delete_message(void)
{ Delay_ms(50);
clean_receive_buf();
sendstring(AT_CMGD);
Delay_ms(500);
if((receive_buf[2]=='O')&&(receive_buf[3]=='K'))
{clean_receive_buf();
}
else {sendstring(AT_CMGD);Delay_ms(500);}
}
void read_message(void)
{ uchar i;
sendstring(AT);
Delay_ms(1000);
clean_receive_buf();
sendstring(AT_CMGR);
Delay_ms(1000);
if(Rx>=RxIn) {clean_receive_buf();}
for(i=0;i<10;i++)
{if(receive_buf[10+i]==rec_unread[i]){new_message=0xff;}//REC UNREAD
else {new_message=0x00;break;}
}
if(new_message==0x00)
{for(i=0;i<4;i++)
{if(receive_buf[9+i]==empty[i]) new_message=0x0f;
else {new_message=0x00;break;}
}
}
}// 64开始 |
|