Промежуточный драйвер GPS постоянно возвращается 0 0 LAT LNG
Я в замешательстве, потому что знаю, что состояние моего устройства GPS и состояние обслуживания включены, но спутники в поле зрения и широта / долгота не указаны. Я настроил мои программы для использования порта GPD1
и мое оборудование использует COM7
, Кажется, это правильная конфигурация. Почему я ничего не возвращаю?
1 ответ
Широта и долгота заполняются, только если есть Фикс (действительная географическая позиция):
// call native method passing in our native buffer
int result = GPSGetPosition(gpsHandle, ptr, 500000, 0);
if (result == 0)
{
// native call succeeded, marshal native data to our managed data
gpsPosition = (GpsPosition)Marshal.PtrToStructure(ptr, typeof(GpsPosition));
if (maxAge != TimeSpan.Zero)
{
// check to see if the data is recent enough.
if (!gpsPosition.TimeValid || DateTime.Now - maxAge > gpsPosition.Time)
{
gpsPosition = null;
}
}
}
Для определения местоположения (действительной позиции) GPS требуется как минимум три действительных спутника.
Посмотрите мой пример GPS, который я связал с другим вашим вопросом. Он покажет дополнительную справочную информацию о том, что происходит с сигналами GPS.
Совет: время первого исправления (TTFF) может длиться до 15-20 минут при свободном обзоре неба, если нет альтернативного источника данных EE, а модуль GPS не перемещается слишком сильно. Данные EE строятся из спутниковых трансляций, скорость передачи данных очень низкая. Данные EE также могут быть предоставлены через Интернет-соединение для передачи данных, но их использование зависит от используемого модуля GPS. Эти данные EE указывают реальное положение всех спутников GPS за две недели. Если приемник GPS выключен и перемещен на ~200 км, местоположение должно быть рассчитано по базе (может быть еще 15 минут).
В действительности, современные GPS-приемники предоставляют альтернативные "каналы" для данных EE, например, GPSeXtra (интернет-данные) или GPS-помощь с помощью MS (идентификатор и местоположение башни сотового телефона).