Почему данные не возвращаются, когда я использую http-запрос Sim808

Почему, когда я использую этот код для http-запроса на DFRobot_sim808, я получаю сообщение "выборка поверх", что означает, что данные не возвращаются?

символьные строки:

char http_cmd[] = " HTTP/1.0\r\n"
                        "Host: 5ac80719.ngrok.io\r\n"
                        "\r\n";
char first[] = "GET /index.php?lat=";

char requestion[100];

функции, чтобы присоединиться к ним:


void setup() {
  float lat = 32.685362, lon = 48.411512;
  char char_coor[10];

  mySerial.begin(9600);
  Serial.begin(9600);

// Установить HTTP-команду
  strcpy(requestion,first);
// Для преобразования широты с плавающей запятой в char
  dtostrf(lat, 4, 6, char_coor);  
  strcat(requestion,char_coor);
// Для преобразования долготы с плавающей запятой в символ
  dtostrf(lon, 4, 6, char_coor);
  strcat(requestion,"&long=");
  strcat(requestion,char_coor);
  strcat(requestion,http_cmd);

.
.
.

и получение:

sim808.send(requestion, strlen(requestion)-1);
  while (true) {
      int ret = sim808.recv(buffer, sizeof(buffer)-1);
      if (ret <= 0){
          Serial.println("fetch over...");
          break; 
      }

/*
Программа останавливается выше
*/

      buffer[ret] = '\0';
      Serial.print("Recv: ");
      Serial.print(ret);
      Serial.print(" bytes: ");
      Serial.println(buffer);
      break;
  }

спасибо

, 👍1

Обсуждение

Хорошо, я имею в виду, почему данные не возвращаются??, @Pooya Behravesh

возможно, устройство не подключено к Интернету ... ваша работа заключается в устранении основных неполадок и обновлении вашего вопроса с описанием того, что вы уже пробовали., @jsotola


1 ответ


1

Я вижу одну проблему: в цикле while есть инструкция break, которая «выходит» из цикла while перед печатью данных. . Может помочь удаление этого break и распечатка данных там, где был break. Вот пример того, что я пытаюсь сказать:

void setup(){
  Serial.begin(9600);  
}

void loop(){

  while(true){
    int ret = 0;
    if(ret <= 0){
      Serial.println("fetch over...");
      // Здесь распечатываем полученные данные...
      Serial.print("Recv: ");
      Serial.print(ret);
      break;
    }
  }

}
,