关键程序简化后如下:
int TCP_Send (char *src_buf, unsigned int buf_len)
{
int i;
char AtCMD[64] = {0};
if ( !QuickQuit ) {
LCDDisLable ("正在发送数据...");
}
GSM_ClearVariable();
sprintf (AtCMD, "AT+CIPSEND=%d\r\n", buf_len);
for (i = 0;i < strlen (AtCMD);i++) {//发送AT命令:AT+CIPSEND=20\r\n
GSM_DATA_SEND (AtCMD[i]);
}
Delay(30);
for (i = 0;i < buf_len;i++) {
GSM_DATA_SEND (* (src_buf + i));
}
if(wait_atReturn("SEND OK\r\n",50)!=0){//等待module(SIM300)返回“SEND OK”
LCDDisLable ("数据发送失败2");
return -1;
}else{
LCDDisLable ("数据发送成功");
}
return 1;
}
经调试,问题就出在wait_atReturn("SEND OK\r\n",50)
调试时,发现(查看存储器)SIM300返回情况如下:
1.什么都不返回
存储器:“00 00 00 00 ...”
2.返回:“/r”
存储器:“0D 00 00 00 ...”
3.返回:“/r/nSEND OK/r/n+IPD20:01 30 30 31 35 55 55 55 55 55 55 55 55 ff 84 03 00 C0 00 B9”
存储器“0D 0A 53 45 5E 44 20 4F 4B 0D 0A 2B 49 50 44 32 30 3A 01 30 30 31 35 55 55 55 55 55 55 55 55 ff 84 03 00 C0 00 B9”
请问各位大侠,为什么会出现这么多情况?是SIM300出问题了,还是我程序有bug?
------解决方案--------------------
。。。学习了。