GPRS отправка данных
- Войдите на сайт для отправки комментариев
Пт, 28/07/2017 - 11:17
Уже задолбался, надо отправить длинную строку с данными с метеостанции, понятное дело что длинная строка не катит так как в ардуине памяти нету...
Так работает
char http_cmd[] = "GET /send.php?test=1 HTTP/1.0\r\n\r\n"; sim900_send_cmd(http_cmd);
Так памяти не хватает:
String http_cmd_str = "GET /send.php?gpsCoords="+urlencode(gpsCoords)+"&humidity="+urlencode(humidity)+"&temperature2="+urlencode(temperature2)+"&pressure="+urlencode(pressure)+"&altitude="+urlencode(altitude)+"&temperatureGround="+urlencode(temperatureGround)+"&temperature="+urlencode(temperature)+" HTTP/1.0\r\nHost: test.org\r\n\r\n"
В итоге пытаюсь сделать что-то типа:
String http_cmds[] = {
F("GET /send.php?"),
F("gps="),
gpsCoords,
F("&hm="),
humidity,
F("&t1="),
temperature,
F("&t2="),
temperature2,
F("&pr="),
pressure,
F("&alt="),
altitude,
F("&gnd="),
temperatureGround,
F(" HTTP/1.0\r\nHost:"),
F("dangerd.org\r\n\r\n")
};
int str_tlen;
for(i=0;i<=16;i++) {
str_tlen = http_cmds[i].length() + 1;
char http_cmd[str_len];
http_cmds[i].toCharArray(http_cmd, str_tlen);
Serial.println(http_cmd);
sim900_send_cmd(http_cmd);
}
gprs_send();
Но не работает по непонятной причине...
У кого какие идеи?
сразу пришло 2 идеи, отправлять 2 запросами раздельными, и второй вариант увеличеть буфер сериала с 64 бай к примеру до 256 (как сделать в гугле есть примеры)
У кого какие идеи?
Во-первых, не вполне понятно, почему во втором примере вы кодируете URLстроку. а в первом и третьем -нет. как все-таки правильно?
В третьем варианте не работает потому, что GPRS запрос должен посылаться одной комундой, а каждый вызов sim900_send_cmd() - это новая команда
Как надо сделать.
1. Забудьте про String
2. Инициализируйте буфер char http_cmd[256]
3. Создайте свой запрос в этом буфере, как вы это делали во втором варианте, только теперь в виде массива символов, а не String
4. Отправьте запрос одной командой
(как сделать в гугле есть примеры)
Есть-то они может и есть, только низзя!