我正在使用连接到 Arduino 的 Sim800L 模块,并尝试使用 AT 命令将数据发送到 Web 服务器。通常,通过执行发送程序(手动,通过在 Arduino 串行监视器上编写每一行代码)来上传表格上的数据,答案是:0,200,35 或 0,200,36,它完美地工作。通过下面的代码,答案总是0,200,351, 0,200,371...通过阅读SIM800L模块的数据手册,命令回复的最后一个数字,参考<datalen>
,和200对应一个'OK '。但是,当我收到那个 3xx 代码时,什么都没有发布。
void post_mySQL(){
String url = get_url();
execute_AT("AT+CFUN=1");
execute_AT("AT+CGATT=1");
execute_AT("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"");
execute_AT("AT+SAPBR=3,1,\"APN\",\"TM\"");
execute_AT("AT+SAPBR=3,1,\"USER\",\"\"");
execute_AT("AT+SAPBR=3,1,\"PWD\",\"\"");
execute_AT("AT+SAPBR=0,1");
execute_AT("AT+SAPBR=1,1");
execute_AT("AT+SAPBR=2,1");
execute_AT("AT+HTTPINIT");
execute_AT("AT+HTTPPARA=\"CID\",1");
execute_AT("AT+HTTPPARA=\"URL\","+url);
execute_AT("AT+HTTPACTION=0");
//execute_AT("WAIT=6");
execute_AT("AT+HTTPTERM");
execute_AT("AT+CIPSHUT");
}
String execute_AT(String AT){
boolean answered = false;
String response;
Serial1.println(AT);
delay(4000);
do{
if(Serial1.available() > 0){
answer = true;
response = Serial1.readString();
}
}while(answer == false);
Serial.println(response);
return response;
}
有谁知道为什么会有这样的差异?