这个是收短信的函数,可是显示出来的p1是整段数据(号码,时间和内容),好像没有运行过strstr这个函数似的。到了这一步就停止了,没有往下执行,请大神指导下我程序的不足。
void read_msgs(void)
{
u8 *p,*p1;
p=mymalloc(SRAMIN,200);
LED1=1;
LED0=1;
usart2flag=0;
USART2_RX_STA=0;
while(1)
{
if(usart2flag==1) //在定时器加的一个标记位
{
usart2flag=0;
p1=(u8*)strstr((const char*)(USART2_RX_BUF),","); //从串口收到的数据中提取出当前短信存到哪个位置
sprintf((char*)p,"AT+CMGR=%s",p1+1);
Show_Str_Mid(0,30,p,16,240);
if(sim900a_send_cmd(p,"+CMGR:",200)==0)
{
p=0;
p1=0;
p1=(u8*)strstr((const char*)(USART2_RX_BUF),"\r"); //寻找回车符
Show_Str(30,105,180,75,p1+2,12,0); //显示短信内容的UNICODE码
sim900a_unigbk_exchange(p1+2,p,0); //unicode码转GBK
Show_Str(30+30,105,180,75,p,12,0); //显示短信内容
}
USART2_RX_STA=0;
p=0;
p1=0;
}
myfree(SRAMIN,p);
}
} |