Отправка координат TinyGPS++ в качестве параметров с GPRS

Я могу просматривать свои координаты на последовательном мониторе с помощью Serial.println(gps.location.lat(), 6);

Я считаю, что тип данных, возвращаемый gps.location.lat(), — double. Мне нужно передать это значение веб-сервису с помощью AT-команд по GPRS.

двойная широта = gps.location.lat()

Позже в моем коде я выполняю команды AT, чтобы начать HTTP POST. Я хотел бы знать, как передать эти двойные значения в моих параметрах.

gsm.println("AT+HTTPPARA=\"URL\",\"http://webservice/service1\""); gsm.println("AT+HTTPDATA=192,10000"); gsm.println("latitude=" + latitude); < Это не разрешено.

Как мне передать этот параметр в мой веб-сервис?

, 👍0


1 ответ


Лучший ответ:

0

Одним из решений может быть разделение команд:

gsm.print("latitude=");
gsm.println(latitude);

Я не уверен, как следует передавать несколько параметров; если это обычный синтаксис, то можно написать что-то вроде

gsm.print("latitude=");
gsm.print(latitude);
gsm.print("&longitude=");
gsm.println("longitude);

Если у меня будет время, я немного изучу этот вопрос.

Чтобы проверить, в чем проблема, вы можете попробовать отправить «статичные» сообщения, например

gsm.println("latitude=12.345");

Чтобы проверить, является ли этот формат правильным

РЕДАКТИРОВАНИЕ: после очень быстрого исследования

Похоже, AT-команды немного сложнее. Чтобы отправить параметры, по крайней мере на SIM800L, нужно:

  • отправить команду HTTPDATA (первый параметр — длина полезной нагрузки)
  • подождите, пока плата отправит вам команду СКАЧАТЬ
  • Отправьте тело запроса, отформатированное как объект JSON. Это означает, что вам нужно отправить что-то вроде { "latitude" : 12.345, "longitude": 98.765 }

В конце концов, гораздо быстрее использовать уже разработанную для этого библиотеку, например ArduinoSIM800L (проверьте библиотеку, доступную для вашего GPRS-модема, или измените эту)

,

Разделение значений в отдельных командах печати было трюком. Спасибо!, @Mitchel Stuart Fountaine