Доступ к функциям GPS в телефонах WinMobile - PullRequest
4 голосов
/ 22 января 2009

Допустим, у вас есть телефон с Windows Mobile 6.0, в котором также есть GPS-приемник. Поддерживает ли WinMobile SDK доступ к функциям GPS?

Если нет, то какие опции (API) для программирования с GPS, т.е. пишут приложения, которые будут использовать возможности GPS. В основном меня интересует Windows Mobile 6.x, но, пожалуйста, включайте также и общие ответы.

Я обязательно проголосую за самые полезные ответы.

Спасибо заранее.

Ответы [ 6 ]

6 голосов
/ 22 января 2009

Два варианта:

  1. Существует промежуточный драйвер GPS, в котором есть статья с инструкциями для .Net на MSDN
  2. Вы можете подключиться к последовательному порту (настраивается, конечно, в пользовательском интерфейсе) и самостоятельно проанализировать строки NMEA

Вариант (1), вероятно, целесообразен

5 голосов
/ 22 января 2009

У Криса Крафта было много исходного кода для такого рода вещей в его серии 30 дней .NET Windows Mobile Applications

  • Неделя 1 - включая GPS-компас
  • Неделя 3 - Включая спидометр GPS и альтиметр GPS
  • Неделя 4 - Включая GPS-часы

К сожалению, эта серия блогов, похоже, умерла, но, к счастью, код сохранился в Codeplex:

30 дней приложений для Windows Mobile

А порт для C и некоторые обсуждения некоторых оригинальных постов можно найти на / dev / mobile

Также есть некоторые заметки по использованию драйвера промежуточного GPS на блоге Raffaele Limosani


Изменить, чтобы добавить:

GPS.NET недавно стал открытым исходным кодом и теперь доступен в CodePlex:

GPS.NET 3.0

3 голосов
/ 22 января 2009

Если вы планируете разрабатывать в .NET Compact Framework, в примерах для разработчиков Windows Mobile есть довольно обширный пример GPS. Это в основном использует обертки вокруг gpsapi.dll, но это показывает работу. Я установил комплект WM6 в C: \ Program Files \ Windows Mobile 6 SDK, и образец GPS находится в C: \ Program Files \ Windows Mobile 6 SDK \ Samples \ PocketPC \ CS \ GPS

Удачи!

2 голосов
/ 22 января 2009

Попробуйте взглянуть на некоторые решения на CodeProject.com . Есть много очень хороших статей о Windows Mobile и GPS.

1 голос
/ 22 января 2009

И для тестирования кода, который использует промежуточный драйвер (см. Другие ответы), не забудьте утилиту FakeGPS из SDK, которую вы можете использовать для передачи потока NMEA, хранящегося в файле, через этот промежуточный драйвер, чтобы вы могли легко протестировать Программное обеспечение GPS для этих данных о местоположении без необходимости принимать GPS и начать движение.

0 голосов
/ 19 сентября 2011

С моей точки зрения намного проще читать последовательный порт (в моем случае COM5, скорость передачи данных 4800) и анализировать полученные данные. (как разобрать строку можно узнать через гугл и фразу: gps NMEA предложения)

Для меня невозможно понять пример по адресу:

C:\Program Files\Windows Mobile 6 SDK\Samples\PocketPC\CS\GPS

Это все так сложно и просто. Я ожидал бы намного более легкий и полезный интерфейс как:

myGps = new GPS()
myGPS.getPosition

Но это, вероятно, невозможно: (

А как это сделать через RS232? (я работаю в VB.NET)

В GUI (или программно) создайте объект System.IO.Ports.SerialPort и используйте его событие DataReceived. Всякий раз, когда данные поступают с GPS, это событие происходит, и в его теле вы можете обработать его.

Данные представлены в виде длинной строки, разделенной на секции $ GPGGA, $ GPGSA и т. Д. Важным является $ GPGGA. Каждая конкретная информация отделяется запятой. Чем только вы анализируете эту строку - в VB.net используя: myArray = myData.Split ("," c).

http://aprs.gids.nl/nmea/

PS: "," c означает, что запятая представляет собой символ, а не строку (VB.NET)

Как видите, не нужно писать больше нескольких строк кода. Пример от MS неоправданно сложен и не для начинающих.

PS2: обратите внимание, что вы не отправляете никаких команд в GPS. Он автоматически и периодически отправляет данные в вашу программу. Вы просто открываете порт, считываете все данные из буфера, конвертируете их в строку с помощью Chr () и анализируете ее. Ничего страшного.

...