大学生
最后登录1970-1-1
在线时间 小时
注册时间2014-2-25
|
在main函数中可以打电话,发短信,在KEY.c中就不行了,在KEY.c中执行完打电话后一直都在这里循环发不了信息,其他程序也不执行了?????
//»ñÈ¡½ÓÊÕµ½µÄÊý¾ÝºÍ³¤¶È
char *get_rebuff(uint8_t *len)
{
*len = uart_p;
return (char *)&uart_buff;
}
void clean_rebuff(void)
{
uart_p = 0;
}
char * sim900a_waitask(uint8_t waitask_hook(void)) //µÈ´ýÓÐÊý¾ÝÓ¦´ð
{
uint8_t len;
char *redata;
do{
redata = SIM900A_RX(len); //½ÓÊÕÊý¾Ý
if(waitask_hook!=0)
{
if(waitask_hook()==SIM900A_TRUE) //·µ»Ø SIM900A_TRUE ±íʾ¼ì²âµ½Ê¼þ£¬ÐèÒªÍ˳ö
{
redata = 0;
return redata;
}
}
}while(len==0); //½ÓÊÕÊý¾ÝΪ0ʱһֱµÈ´ý
SIM900A_DELAY(20); //ÑÓʱ£¬È·±£ÄܽÓÊÕµ½È«²¿Êý¾Ý£¨115200²¨ÌØÂÊÏ£¬Ã¿msÄܽÓÊÕ11.52¸ö×Ö½Ú£©
return redata;
}
我采用的是调用函数的方式执行,发短信,打电话的
int GSMbaojing()
{
sim900a_call("112"); //²¦´ò112µç»°²âÊÔ
rebuff = sim900a_waitask(0);
if(strstr(rebuff,"OK") != NULL) //ÏìÓ¦OK£¬±íʾģ¿éÕý³£½ÓÊÕµ½ÃüÁî
{
printf("\r\nÕýÔÚºô½Ð\r\n");
SIM900A_CLEAN_RX(); //Çå³ý½ÓÊÕ»º³åÇø
rebuff = sim900a_waitask(0); //ÖØеȴýÏûÏ¢
if(strstr(rebuff,"NO CARRIER") != NULL) //ÏìÓ¦NO CARRIER,ͨ»°½áÊø
{
printf("\r\nͨ»°½áÊø\r\n");
}
else if(strstr(rebuff,"NO ANSWER") != NULL) //ÏìÓ¦NO ANSWER£¬ÎÞÈ˽ÓÌý
{
printf("\r\nÄ㲦´òµÄµç»°ÔÝʱÎÞÈ˽ÓÌý£¬ÇëÉÔºóÔÙ²¦\r\n");
}
}
// //ÖÁÉÙ¼ä¸ô5sÔÙ·¢µÚ¶þÌõ¶ÌÐÅ
SIM900A_DELAY(1000);
//ÖÐÓ¢ÎĶÌÐÅ£¬Êµ¼Ê²âÊÔʱÇë°Ñµç»°ºÅÂëÐ޸ijÉÒª½ÓÊÕ¶ÌÐŵÄÊÖ»úºÅ
sim900a_sms((char *)num,"Ö÷ÈË£¬¿ì»Ø¼Ò£¬¿ì»Ø¼Ò£¬¼ÒÀïÓÐÄ°ÉúÈËÈëÇÖ£¡£¡£¡");
printf("\r\nÖ÷ÈË£¬¿ì»Ø¼Ò£¬¿ì»Ø¼Ò£¬¼ÒÀïÓÐÄ°ÉúÈËÈëÇÖ£¡£¡£¡ÒÑ·¢ËÍÖÁ£º%s£¬Îª·½±ã²âÊÔ£¬ÇëÔÚ³ÌÐòÖÐÐ޸ĽÓÊÕ¶ÌÐŵÄÊÖ»úºÅÂë",num);
return 0;
}
如果不采用函数的方式执行,发短信,打电话的话也会进入死循环
|
|