Я пытаюсь отправлять данные на мой компьютер с Arduino Mega и Ethe rnet Shield каждые 10 секунд, но иногда происходит сбой в течение нескольких минут. Я посмотрел журнал доступа Apache и получил:
Apache журнал доступа
Как видите, иногда Arduino отправляет просто часть URL (красные линии на картинке), а не весь URL (зеленые линии на картинке), но я не знаю, что не так. Я напечатал URL в последовательном порядке, и монитор отображает весь URL, поэтому я думаю, что строка не повреждена в Arduino, но пока она отправляется на сервер.
- Я попытался вставить в код "client.flu sh ()" (он ждет, пока все исходящие символы в буфере не будут отправлены);
- Я пытался уменьшить URL (я видел в foruns, что это может быть нехватка памяти Arduino);
См. Часть моего кода ниже для получения дополнительной информации: (URL прокомментирован для уменьшения его длины)
int sendDatatoServer(uint8_t deviceID) {
url = "GET /Supervisorio_Energia_FPBR/insert_dados.php?";
url += "ID=";
url += String(deviceID);
//url += "&U=";
//url += String(vetor_resultado[0]);
//url += "&I=";
//url += String(vetor_resultado[1]);
//url += "&FP=";
//url += String(vetor_resultado[2]);
//url += "&VA=";
//url += String(vetor_resultado[3]);
//url += "&VAR=";
//url += String(vetor_resultado[4]);
//url += "&W=";
//url += String(vetor_resultado[5]);
url += "&F=";
url += String(vetor_resultado[6]);
url += "&V1=";
url += String(vetor_resultado[7]);
//url += "&V2=";
//url += String(vetor_resultado[8]);
//url += "&V3=";
//url += String(vetor_resultado[9]);
//url += "&I1=";
//url += String(vetor_resultado[10]);
//url += "&I2=";
//url += String(vetor_resultado[11]);
//url += "&I3=";
//url += String(vetor_resultado[12]);
//url += "&DW=";
//url += String(vetor_resultado[13]);
//url += "&DVA=";
//url += String(vetor_resultado[14]);
if (!client.connected())
{
conn(); // Function for connection
}
if (client.connected()) // If client is connected...
{
client.println(url); // Print URL on the client
client.flush();
Serial.println(url);
Serial.println("Values insert!");
client.stop();
} else {
Serial.println("Without Connection!");
}
}
void conn()
{
Serial.println("Connecting...");
int i = 1;
while(Ethernet.begin(mac) == 0)
{
Serial.println("Trying connection " + String(i));
i++;
}
if(client.connect(server_ip, 80)) // Try connection to the server
{
Serial.println("Connection with server OK");
}
}