因此,我通过我的 ESP32+SIM800L 设置上的 HTTP POST 将数据发送到托管在 000WebHost 上的 php 脚本。我正在以 800Hz 的频率记录传感器数据并将其存储在一个字符数组中,例如:a[]=3&a[]=5&a[]=8... 这将成为我的 POST 请求的有效负载数组。
出于某种原因,我只能发送 161 个值,其内容长度约为 1449。
代码有点长,所以我在这里减少了它:我正在使用 TinyGSM 库
//Start GSM:
SerialAT.begin(115200, SERIAL_8N1, MODEM_RX, MODEM_TX);
SerialMon.println("Initializing modem...");
modem.init();
SerialMon.print(F("Connecting to "));
SerialMon.print(apn);
if (!modem.gprsConnect(apn, gprsUser, gprsPass)) {
SerialMon.println(" fail");
delay(10000);
return;
}
SerialMon.println(" success");
if (modem.isGprsConnected()) {
SerialMon.println("GPRS connected");
}
SerialMon.print("Connecting to ");
SerialMon.println(server);
if (!client.connect(server, port)) {
SerialMon.println(" fail");
delay(10000);
return;
}
SerialMon.println(" success");
// Record Sensor values for one second
//Send the character array to the httpPost function:
if (client.connect(server,port)) {
Serial.println("connected");
client.println("POST /upload.php? HTTP/1.1");
client.println("Host: epiblastic-reactor.000webhostapp.com");
client.println("User-Agent: TTGO-TCALL/1.0");
client.println("Content-Type: application/x-www-form-urlencoded;");
client.print("Content-Length: ");
client.println(String(acceldata).length());
client.println();
client.println(acceldata);
uint32_t timeout = millis();
while (client.connected() && millis() - timeout < 10000L) {
// Print available data
while (client.available()) {
char c = client.read();
SerialMon.print(c);
timeout = millis();
}
如果我发送超过 161 个值,串行监视器会打印:
#Available: 0 on 1
不断地。
出了什么问题?有人可以帮帮我吗?