Проблемы с промежуточным драйвером GPS - PullRequest
0 голосов
/ 19 ноября 2010

У меня возникли некоторые проблемы с промежуточным драйвером GPS, я добавил виртуальный последовательный порт к нашей камере / GPS-оборудованию для предоставления необработанных данных NMEA, и теперь это работает без проблем, любое приложение, требующее необработанных данных NMEA, может подключиться кCOM8 и получите его.

Если задействован промежуточный драйвер GPS, т. Е. «Настройка | Внешний GPS» имеет аппаратный порт, установленный на COM8, и программный порт на COM7.Затем, когда приложения запрашивают данные из COM7, данные кажутся другими.Я только говорю, что появляется, поскольку я не могу проверить физический вывод, см. Примечание A.на 6 спутниках не будет отображаться 3D GPS.Только при подключении к COM8 я получу исправление 3D GPS, это для меня означает, что программное обеспечение Microsoft изменяет данные, а не просто обменивается ими, что создает проблемы для пользователей, которые хотят использовать драйвер для обмена данными между несколькими приложениями.

У кого-нибудь есть идеи о том, почему промежуточный драйвер Microsoft вызывает у меня такие проблемы, о нем, похоже, очень мало информации.

Примечание A) - Похоже, диагностической программы для WM6 professional нет.он будет читать COM-порты или, по крайней мере, перенаправлять трафик на COM-порт, подключенный к ПК.Если кто-то может порекомендовать программу для WM6 для подключения и просмотра данных с COM-портов, в идеале с отметками времени.Или программа для перенаправления трафика, т.е. считывания с COM7, открытия COM6 и отправки данных через COM6.Я могу отправить данные в систему, но никакие программы, которые я могу найти, не вытеснят данные.

Ответы [ 2 ]

1 голос
/ 19 ноября 2010

Изменение данных устройства - это то, что должен делать промежуточный драйвер GPS. Он изолирует ваше приложение от деталей реализации устройства GPS, чтобы ваш код мог работать с любым устройством GPS. Я не могу диагностировать вашу проблему по вашему вопросу, я могу только рекомендовать документы .

0 голосов
/ 24 января 2011

Я работал с производителем мобильного устройства, чтобы диагностировать это.Им пришлось использовать наше устройство и отладочную версию ОС, чтобы изолировать его, и даже тогда проблема не в строчке кода с обеих сторон (драйвер или ОС).Наш метод чтения не имеет тайм-аута, будучи портом программного обеспечения, это не имеет значения, но это необходимо.

Нечто подобное должно быть добавлено.

if(WaitForSingleObject(driver->GPSDataAvailableThread, driver->GPSTimeouts.ReadTotalTimeoutConstant) != WAIT_OBJECT_0)
{
   //debug message, no data to read
   return 0; //return 0 bytes read
}
//otherwise carry on a normal read operation.

Даже с тайм-аутомиз 0, это позволяет потоку спать и другие процессы продолжаться.Проблема была в том, что без него приложения считывали COM-порт так сильно, что это вызывало перегрузку промежуточного драйвера при вызовах и блокировках мьютекса.Причиной этой проблемы являются приложения, которые выполняют много чтений по 1 байту, например pocketputty, но программное обеспечение SatNav, такое как чтение второго пилота 1024 раз в секунду, не имеет проблем.

...