Запрос местоположения GPS (только длинный. И лат.) С телефона WM6 с использованием .NET CF - PullRequest
1 голос
/ 28 июля 2010

Я ищу очень простое решение для получения данных GPS с мобильного телефона WM6.Я не ищу библиотеку обертки GPS (Google, кажется, находит ТОЛЬКО библиотеки GPS ...).Я был бы признателен просто за фрагмент кода, который делает именно это: запуск gps, получение long и lat, конец gpsНичего более.Я думаю, с .NET Compact Framework мне нужно будет использовать P / Invoke.
Есть идеи?Большое спасибо.

1 Ответ

1 голос
/ 28 июля 2010

Вы говорите, что не ищете библиотеку GPS Wrapper, но хотите запросить GPS. Самый простой способ сделать это - использовать промежуточную библиотеку GPS, которая является драйвером интерфейса потока. Для вызова его из управляемого кода требуется некоторая форма оболочки, которая выполняет вызовы P / Invoke. Пишете ли вы это или используете тот, который уже существует, решать только вам, но вы все равно будете использовать упаковщик.

Чтобы просто открыть GPS, получить позицию и закрыть ее будет набор из трех вызовов: GpsOpenDevice , GpsGetPosition и GpsCloseDevice , однако после вызова GpsOpenDevice вам действительно нужно знать, когда инициализируется драйвер, прежде чем вызывать GpsGetPosition, поэтому вам, вероятно, также необходимо вызвать GpsGetDeviceState , чтобы узнать, когда он будет готов.

Поскольку вам не нужны уведомления, вызов GpsOpenDevice прост - просто передайте нули (или IntPtr.Zero в зависимости от того, как вы определяете свой метод P / Invoke) для всех параметров.

GpsGetPosition получает указатель на GPS_POSITION структуру. Это немного уродливый зверь, но не так уж и плохо, так как у него нет указателей, которые нужно выделить, и CF Marshaler, с небольшой помощью, может довольно легко его собрать.

Я не собираюсь писать этот код здесь, так как он длинный, плюс он уже сделан в приложении-образце GPS, которое Microsoft предоставляет вместе с WinMo SDK (см. На своем жестком диске %PROGRAM FILES%\Windows Mobile 6 SDK\Samples\PocketPC\CS\GPS).

...