Arduino не отправляет весь URL на сервер - PullRequest
0 голосов
/ 19 февраля 2020


Я пытаюсь отправлять данные на мой компьютер с 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"); 
  } 
}
...