碰到一个问题现在自己还没解决,这里求教下:
问题描述: 通过GPRS发送ADC1_savedate1
if(sim900a_gprs_send((const char*)ADC1_savedate1)!=SIM900A_TRUE)
{
LED3( ON );
printf("\r\nTCP发送失败,请检测各模块是否运行正常\r\n");
SIM900A_DELAY(1000);
printf("\n链接断开\n");
SIM900A_DELAY(100);
sim900a_gprs_link_close();
printf("\n关闭场景\n");
SIM900A_DELAY(100);
sim900a_gprs_shut_close();
LED3( OFF );
}
数据是发送成功的,但是判读语句是结果为非,程序跳转到再发送后续语句了。问题就在if(sim900a_gprs_send((const char*)ADC1_savedate1)!=SIM900A_TRUE)里面。
uint8_t sim900a_gprs_send(const char * str)
{
char *redata;
SIM900A_CLEAN_RX();
sim900a_tx_printf("AT+CIPSEND\r");
//SIM900A_DELAY(100);
redata=sim900a_waitask(0);
SIM900A_CLEAN_RX();
sim900a_tx_printf("%s",str);
while((USART2->SR&0X40)==0);//
USART2->DR=(u32)0x1A; //·
redata=sim900a_waitask(0);
SIM900A_CLEAN_RX();
redata=sim900a_waitask(0);
if(strstr(redata,"OK")==NULL) //这句判断”OK“是否是redata 的子字符串,如果不是返回NULL,所以返回值为FALSE了。但是我没搞明白redata的用途,正常应该是怎么样的?
{
return SIM900A_FALSE; //
}
return SIM900A_TRUE;
}
求大神帮我具体解析下这段程序,谢谢。另外我定义的是 BYTE ADC1_savedate1[512]; |