Как читать предложения NMEA в Windows Vista, используя C ++

К моей системе подключено устройство GPS под управлением Windows Vista.

Я хотел прочитать предложения NMEA с устройства GPS и распечатать на экране.

Как я узнаю, к какому порту подключено устройство GPS, как могут быть подключены и другие устройства на различных com-портах. Я занимаюсь разработкой приложения на с ++,

Предоставляет ли Microsoft какие-либо API для этого?

13.10.2009 06:51:00
3 ОТВЕТА

Что это за порт? Если это последовательный порт, попробуйте подключиться ко всем последовательным портам по одному, а затем просто прослушайте строку NMEA. Если он получен, используйте порт, если он не получен, перейдите к следующему порту.

1
13.10.2009 06:53:53
хм хорошо спасибо за быстрый ответ. Могу ли я исправить любой временной интервал для этого, и после истечения таймера я могу запустить цикл for и проверить все обряды портов?
Vinayaka Karjigi 13.10.2009 06:57:28

Я склонен предлагать пользователю порт. NMEA обычно приходит в виде строки ASCII через COM-порт. До появления Bluetooth это обычно было COM1-COM4, ​​причем в 90% случаев это либо COM1, либо COM2. Сейчас более распространено подключение через Bluetooth, где вы регулярно видите COM-порты до COM20 и выше, поэтому грубая сила - медленный вариант. Время, необходимое для проверки всех портов, зависит от того, как часто ваш GPS отправляет отправления (при условии, что он не требует подсказок) и ваших тайм-аутов. Вы можете ожидать, что поиск займет до 30 секунд. Если вы перечислите COM-порты, это будет намного быстрее, так как редко будет более полудюжины активных портов одновременно.

1
13.10.2009 07:03:10

Ну, в старые времена вы давали пользователю вашего приложения право указывать правильный порт;) Или действительно, проверьте все из них. Формат и доступный набор предложений NMEA могут различаться в зависимости от конкретного устройства - например, прочтите здесь некоторую информацию , но предложения должны быть в виде простого текста. (Если нет, то это не формат NMEA :))

1
13.10.2009 12:15:36