GPRS и отправка файла/данных файла на сервер

Тема в разделе "Arduino & Shields", создана пользователем obuhanoe, 1 июн 2016.

  1. obuhanoe

    obuhanoe Гик

    Добрый вечер!
    Научился по GPRS отправлять данные на сервер.
    Код (C++):
    numdata=inet.httpGET(www.c_str(), 80, www_patch_data.c_str(), msg, 50);
    А теперь нужно прочитать файл не более 2-5 Кб, и весь результат отправить так же с помощью httpGET или другим способом.
    www = site.ru
    www_patch_data = /log.php?data= и тут значение переменной.

    Файл читаю следующим образом, но вывод добился только в Serial
    Код (C++):
    void read_sd_logs() {
      int h = 0;
      char symbol = 0;
      File r_loggs;
      String filename_logs = "log.txt";
      r_loggs = SD.open(filename_logs.c_str());
      char array[]={};
      if (r_loggs) {
         // читаем из файла, пока не достигнем конца файла:
         while (r_loggs.available()) {
          //Serial.write(r_loggs.read());
          // считываем байт входящего файла
          symbol = r_loggs.read();
          array[h]=symbol;
          h++;
          delay(1);
         }
        array[h]='\0';
        // закрываем файл:
        r_loggs.close();
        Serial.println("+++++*************++++++");
       
        Serial.println(array);  
    }
      else {
        debug_log("error opening test.txt");
    }      
    }
    Serial.println(array) ничего толком не выдает, а если раскоментировать
    Код (C++):
    //Serial.write(r_loggs.read());
    то файл полностью выводится .

    Спасибо за помощь.
     
  2. obuhanoe

    obuhanoe Гик

    Ни у кого нет идей?
     
  3. obuhanoe

    obuhanoe Гик

    тогда отвечу я
    Код (C++):
    // чтение лога работы с SD
    void read_sd_logs() {

      String sd_logs;
      char symbol = 0;
      File r_loggs;
      String filename_logs = "/logs/log" + String(day()) + String(month()) + ".txt";
      r_loggs = SD.open(filename_logs.c_str());
      if (r_loggs) {
         // читаем из файла, пока не достигнем конца файла:
         while (r_loggs.available()) {
          // считываем байт входящего файла
          symbol = r_loggs.read();
          sd_logs += symbol;    
          delay(10);
         }
        // закрываем файл:
        r_loggs.close();
        gprs_sending_data("FILE READ: " +String(sd_logs));
    }
      else {
        debug_log("error opening test.txt");
    }      
    }
    в отправке по GRPS - gprs_sending_data
    так как используем
    Код (C++):
    numdata=inet.httpGET(www.c_str(), 80, www_patch_data.c_str(), msg, 50);
    в www_patch_data - нужно вместо пробелов и перевод на новую строку сделать следующее
    Код (C++):
    www_patch_data.replace(" ","%20");
      www_patch_data.replace("\r\n","%0a");
    И данные грузятся на сервер без проблем.
     
    ZAZ-965 нравится это.