LINUX.ORG.RU

Взаимодействие картографических андроид и десктоп приложений.

 , ,


0

2

Доброго времени суток. Такая задача.Есть телефон с андроидом. На нем приложение которое надо написать на Qt,чтобы оно передавало координаты телефона.Клиент,то есть. И есть ПК. На нем написанный на Qt сервер,который отображает карту и рисует координаты телефона на ней. Вопрос состоит в том,с чего,собственно,начать? Нагуглил,что координаты передавать можно с помощью модуля QtLocation,но этот модуль не предназначен для десктопных приложений,только для андроида,насколько мне известно. Карту на десктопном приложении можно отобразить,загрузив в QWebView html страницу,но как на ней рисовать координаты телефона?Есть ли у кого какие мысли по этому поводу? Буду весьма признателен.

1. Берешь protobuf и создаешь в нем структуру для хранения широты и долготы (по желанию в структуру можно добавить id устройства и черта лысого).
2. С помощью QtLocation получаешь координаты и пишешь их в структуру.
2. С помощью zeromq заворачиваешь сериализованнюу protobuf'ом структуру в сообщение и отправляешь на сервак.
3. На серваке получаешь сообщение от zeromq.
4. Из сообщения достаешь сериализованную структуру и десериализуешь ее protobuf'ом в структуру.
5. Используешь координаты, указанные в структуре, внутри своего приложения.

Гуглить protobuf и zeromq. Обе библиотеки очень просты в использовании.

Если не хочется делать все по нормальному, тогда просто придумываешь свой формат сообщения в котором будешь передавать широту и долготу. В этом случае для передачи/приема потока можно использовать QTcpSocket/QTcpServer.

trex6 ★★★★★
()
Последнее исправление: trex6 (всего исправлений: 3)
Ответ на: комментарий от trex6

Поток на сообщения делить.

В кутях уже есть маршалинг встроеных типов. Я бы даже сказал, что и протобуф не нужен, если у него обе стороны на кутях.

void send_massage(const QByteArray &msg, QIODevice *skt)
{
  QDataStream ds(skt);
  ds << msg;
}
void recv_message(QByteArray &msg, QIODevice *skt)
{
  QDataStream ds(skt);
  ds >> msg;
}

nanoolinux ★★★★
()

Лично я сторонник того, что между клиентом и сервером должен быть понятный протокол, а реализовать его можно на чем угодно.

В данном случае можно использовать банальный HTTPS:

GET /update-location?lon=34.45&lat=-21.12

К протоколу HTTPS можно прикрутить, например, клиентские сертификаты.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от nanoolinux

Две стороны на кутях,но это данные двух разных модулей. В приложении на ПК QWebKit, а на телефоне QtLocation. Поймет ли приложение на компе,что это за данные?

tiprocop
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.