大家好:最近做一个GPRS收发短信的实验,接收短信后解析出号码和内容,然后回复给该手机需要的内容,
但是老是出现问题,可以解析出号码和内容,请高手帮忙看一下啊,MC39i的模块。
while( 1 )
{ //发送数据
serBwrite( "AT+CMGL=\"REC UNREAD\"\r", 21 );
while( serBwrFree() != BOUTBUFSIZE )
{
msDelay( 100 );
}
memset( temp, 0, 1024 );
bytes = serBread( temp, BINBUFSIZE, 150 );
if( NULL != strstr( temp, "+CMGL:" ) )
{
//printf( "Receive:%s\n", temp );
m=strstr(temp,"+86");
n=strstr(temp,"\",,\"") ;
for(l=0;l
{
num[l]=*(m+3+l) ;
}
sprintf(V,"%f",VOLT) ;
sprintf(TempBuffer2, "Voltage A0 is:%s\r", V );
puts(num);
putchar('\n');
SMSTranslate(temp);
puts(temp);
putchar('\n');
sprintf(TempBuffer1, "AT+CMGS=%s\r", num );
puts(TempBuffer1);
putchar('\n');
while(serBrdUsed()!=0)serBgetc(); //清空缓存
serBputs(TempBuffer1);//发送发送短信申请
if( serExpect( ">", 30000 ) == 1 )
{
printf( "AT+CMGS OK!\n" );
}
else
{
exit( 0 );
}
msDelay(1000);
serBputs(TempBuffer2);
if( serExpect( "+", 12000 ) == 1 )
{
printf( "OK!\n" );
}
else
{
exit( 0 );
}
}
}
}
不知道哪出了问题,仿真的结果老是这个:(现在老是怀疑是TempBuffer1和TempBuffer2长度的问题。)15965427552
a
AT+CMGS=15965423890
AT+CMGS=15965423890
>AT+CMGS OK!
Voltage A0 is:0.000000AT+OK! 对方收不到短信!
如果对方能够收到短信的话,应该是这样的形式:
15965427552
a
AT+CMGS=15965423890
AT+CMGS=15965423890
>AT+CMGS OK!
Voltage A0 is:0.000000
+OK!