Работа с буфером

staffnz
Offline
Зарегистрирован: 02.04.2015

 

  [В закладки[Плавающее окно] #47 (permalink)
Нужно увеличить буфер. Формируется строчка str, она записывается в буфер, 
Код C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  String str = "{\"title\":\"temp38\", \"temperature\": \"";
  str += 25;
  str += "\", \"latitude\":\"";
  str += ltd;
  str += "\",\"longitude\":\"";
  str += lnd;
  str += "\", \"device_id\":\"";
  str += 28;
  str += "\"}";
  int len = str.length()+1;
  unsigned char* buf = new unsigned char[len];
  str.getBytes(buf, len, 0);
  numdata=inet.httpPOST("m-ark.kps-dev.com", 80, "/temperature ", (const char*)buf, msg, 50);
  delete buf;

через который записываются параметры, передаваемые через POST-запрос: (const char*)buf. 
Но в ходе работы буфера хватает только на половину необходимой строки: 

{"title":"temp38", "temperature": "35", "latitude":"45.55555","longitude":"33.44444", "device_id":"28"}.

Как можно увеличить этот буфер или почистить?

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Зачем Вам buf (удалите строки 10-12 и 14), выкиньте его и напишите просто (вместо 13 строки):

numdata=inet.httpPOST("m-ark.kps-dev.com", 80, "/temperature ", str.c_str(), msg, 50);

 

staffnz
Offline
Зарегистрирован: 02.04.2015

Спасибо, совет дельный. Стало лучше, но только пропадает часть текста, причём как-то не последовательно. Видимо опять переполнение имеет место быть. Есть какая-то функция, что обнуляет память, куда строка записывается? Или что-то, что может помочь? 

 Эти проблемы с POST-запросом начались только после того, как GPS-приёмник в код включил. Сразу будто места на стало хватать.

 Спасибо. 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Если переменная часть ltd, lnd имеет фиксированную длину, проще выкинуть String и использовать глобальный буфер с фиксированным размером, тогда скетч не будет постоянно выделять и удалять память динамически. Если не забуду, попробую пример привести, сейчас на работу пора.

staffnz
Offline
Зарегистрирован: 02.04.2015

Буду признателен, Спасибо.

staffnz
Offline
Зарегистрирован: 02.04.2015

Очень жду...

 Спасибо 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Сожалею, времени вообще нет.
Вот вариант http://forum.arduino.cc/index.php?topic=243660.0