+HTTPACTION= 0,200,351 不能 post 数据
+HTTPACTION= 0,200,351 can't post data
我正在使用连接到 Arduino 的 Sim800L 模块,并尝试使用 AT 命令将数据发送到网络服务器。
通常,通过执行发送程序(手动,通过在 Arduino 串行监视器上编写每一行代码)以将数据上传到 table,答案是:0,200,35 或 0,200,36,并且它完美的作品。
通过下面的代码,答案总是0,200,351, 0,200,371 ...通过读取SIM800L模块的数据sheet,命令回复的最后一个数字,参考<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;
}
有人知道为什么会有这样的差异吗?
datalen 太高,因为 sim800l 缓冲区总是满的,通过定义解决:
#define SERIAL_BUFFER_SIZE 256
#define SERIAL1_BUFFER_SIZE 256
我正在使用连接到 Arduino 的 Sim800L 模块,并尝试使用 AT 命令将数据发送到网络服务器。
通常,通过执行发送程序(手动,通过在 Arduino 串行监视器上编写每一行代码)以将数据上传到 table,答案是:0,200,35 或 0,200,36,并且它完美的作品。
通过下面的代码,答案总是0,200,351, 0,200,371 ...通过读取SIM800L模块的数据sheet,命令回复的最后一个数字,参考<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;
}
有人知道为什么会有这样的差异吗?
datalen 太高,因为 sim800l 缓冲区总是满的,通过定义解决:
#define SERIAL_BUFFER_SIZE 256
#define SERIAL1_BUFFER_SIZE 256