Внешний gps для windows
Описание проблемы
Программы геопозиционирования предназначенные для «плиточного» интерфейса работают, а большинство десктопных программ геопозиционирования — нет. Именно так дела обстоят на устройстве thinkpad tablet 2 (обладателем которого я и являюсь), а изучая соседние темы форума встречаю множество подобных случаев и на других устройствах. Думаю, будет не лишним собрать желающих решить проблему в одной теме.
Причина
Десктопные программы исторически берут данные gps с COM порта. Драйвер большинства встроенных gps приемников, которые сейчас устанавливаются на планшеты под уравлением windows 8, не имеет ком-порта. Для взаимодействия с gps-приемником реализован sensor and location API, который используется в основном в новом ПО (например, Maps в плиточном интерфейсе). Авторы десктопных программ геопозиционирования ещё не адаптировали свои продукты под новый API. Возможно в следующих версиях эта поддержка будет добавлена — пример тому oziExplorer, который уже сейчас поддерживает работу с сенсором через API, без использования КОМ-портов. Но что же делать с остальными программами геопозиционирования?
Идея
Раз программа ожидает данных от КОМ-порта — нужно ей эти данные дать. По умолчанию на моём планшете (thinkpad tablet 2) КОМ-порты отсутствуют. В интернете есть несколько программ которые позволяют создать пару виртуальных ком-портов. Обычно порты создаваемые программно связаны между собой, то есть любые данные которые записываются в порт КОМ1 могут быть прочитаны с порта КОМ2, и наоборот. Портов нужно именно два т.к. с каждым портом может работать одна программа. Читать данные с первого порта будет программа gps навигации, а записывать данные в связанный порт будет программа-посредник. Она будет читать данные о месторасположении с gps-приемника используя location API, на основании этих данных формировать сообщение NMEA (это такой общепринятый формат сообщений которым общаются gps устройства), а затем передавать это сообщение в ком-порт.
Реализация
Для начала создадим в системе пару виртуальных ком-портов. Я пользуюсь бесплатной программой com0com. Перед установкой на win8 необходимо отключить контроль цифровой подписи драйверов устройств. Это делается через параметры загрузки ОС, для нажатия f7 пришлось подключать к планшету клавиатуру. После установки в диспетчере устройств должно добавиться 3 устройства, одно: com0com — bus for serial port и два одинаковых: com0com — serial port emulator
В интерфейсе com0com можно добавлять\удалять произвольное число портов. При добавлении порта контроль подписи драйверов должен быть отключен.
В моём конкретном случае, после перезагрузки планшета, ОС блокирует неподписанные драйвера портов — пришлось отключить secure boot в опциях UEFI, в этом случае всё ок.
Для проверки работоспособности созданных портов я использую программу tera term.
При зупуске можно выбрать у какому порту подключится терминал. Если список портов пуст — значит либо драйверы ком-портов не были установлены при установке com0com, либо в нестроках портов com0com не установлена галка «use Ports class». Если порты доступны — нужно запустить 2 окна tera term, в настройках подключения указать разные порты (те два порта что мы создали через com0com). А теперь сама проверка — расположите окна терминала так чтобы можно было видеть оба окна одновременно. Теперь если сделать активным одно из окон и начать вводить символы с клавиатуры(на планшете можно с экранной), то текст должен появляться не в том окне которое активно, а в другом — это свидетельствует о том что передача данных из одного порта в другой работает корректно.
Теперь остаётся один из портов указывать в настройках программы геопозиционирования (я тестировал на sas planet последней версии).
Данные на второй порт будет передавать программа Sensor2COM. Она работает таким образом — при запуске отображается статус сенсора и (если сенсор передаёт данные — координаты текущего месторасположения).
Если статус сенсора initializing — возможно следует выбраться на открытый воздух, или хотябы подойти к окну — в помещениях gps обычно не работает.
На основании координат формируется строка NMEA, которая также отображается на форме. Чтобы начать передавать данные на КОМ-порт нужно указать номер порта, скорость передачи (baud rate (я использовал значения 9600 и с S2C и в SAS, но думаю будет работать с любым значением)) и нажать кнопку start sending data. Пока статус передачи отображается как Sending data — строка будет раз в секунду передаваться на ком-порт, а оттуда в программу геопозиционирования. Sensor2COM можно свернуть в трей. Пока она запущена — SAS будет отображать ваши координаты на карте.
Я уже выкладывал Sensor2COM в теме thinkpad tablet 2, где многие пользователи уже опробывали программу в дествии и поделились положительными отзывами. Надеюсь тема в общем разделе будет столь же полезна и пользователям других устройств. Также мне как разработчику было бы удобнее выкладывать новые версии, отвечать на вопросы и разбирать проблемные ситуации в отдельной теме. Надеюсь модераторы раздела одобрят такое начинание.
Sensor2COM распространяется бесплатно. Текущая версия 1.02, её и прикладываю к этому посту.
Кроме моего решения, существует такое http://www.centrafuse.com/centrafuse-localizer
Авторы просят за неё 15$. Насколько я понял из описания, драйвер ком-порта устанавливается вместе с самой программой.Sensor2COM 1.02.exe ( 25,5 КБ )
Сообщение отредактировал komok1965 — 26.07.13, 09:31
Что-то народ не высказывается.
Device85 сотворил весьма нужную прогу, которая реально работает на моём ТРТ2 в навигаторе 7 дорог. К сожалению, на CityGuide она не пошла. Имхо, это две самые удобные программы навигации для Windows 8 планшетов.
Вражеская Localizer до вчерашнего дня работала хуже Sensor2Com — её даже 7 дорог не видела. Но вчера автор выложил последнюю версию, серьёзно переработанную, и Localizer заработал на всех программах, что я ей скармливал. Обидно за наших 🙁
Решил посмотреть в Tera Term выходные потоки этих программ. Так вот, Localizer выдает аж 18-19 строк за цикл, а Sensor2Com только одну — минимальную $GPRMC. По словам автора Localizerа он сам не формирует поток NMEA, а только собирает его от GNSS и отправляет на СОМ-порт.
В прежней версии Localizerа полностью собранного потока NMEA не было. Думается, что это главная причина по которой Sensor2Com не цепляется в CityGuide. А посему вопрос к уважаемому Device85 : нельзя ли в рамках Sensor2Com выдавать аналогичный Loсalizerу полный поток NMEA ?
Сообщение отредактировал slade60 — 30.05.13, 12:37
Телефон в качестве GPS-приемника для ноутбука (Bluetooth)
Если у Вас возникла необходимость подключить к ноутбуку GPS-приемник, чтобы отслеживать свое местоположение, а покупать его не хочется, то в этой статье Вы узнаете, как с таким же успехом можно использовать телефон на Android в качестве такого GPS-приемника. Разумеется, в телефоне должен быть GPS-модуль и еще оба устройства должны иметь Bluetooth, который будет использоваться для беспроводной связи.
Полезные статьи по теме:
Настройка телефона
В Google Play Market можно найти много приложений, предназначенных для передачи координат GPS по Bluetooth, например: GPS over BT, GPS2Bluetooth, Share GPS, Bluetooth GPS Output (платное). Нам больше всего понравился GPS over BT, но если у Вас не получится осуществить передачу данных GPS с помощью этого приложения, попробуйте другие из перечисленных выше.
Перед тем как запускать приложение, выполните следующие предварительные настройки:
- Выполните сопряжение по Bluetooth телефона с ноутбуком.
- Включите опцию GPS в телефоне.
Запустите приложение GPS over BT, оно автоматически выполнит поиск спутников, определит местоположение и начнет передавать данные подключенному по Bluetooth ноутбуку.
Чтобы увидеть карту спутников, нажмите на кнопку «Меню» телефона и выберите соответствующий пункт.
Настройка ноутбука
Настройте виртуальный последовательный порт для Bluetooth-устройства в ноутбуке. Для этого в Windows выполните следующие действия: откройте окно «Устройства и принтеры» (Пуск > Панель управления > Оборудование и звук > Устройства и принтеры), найдите среди подключенных к ноутбуку устройств сопряженный по Bluetooth телефон, нажмите на него правой кнопкой мыши и выберите команду контекстного меню «Свойства».
Затем в окне свойств переключитесь на вкладку «Службы», поставьте галочку рядом с пунктом «Последовательный порт (SPP)…» и нажмите на кнопку «Применить». После небольшого ожидания Вы увидите номер COM-порта, который в дальнейшем Вам понадобится для подключения приемника GPS в программе навигации для Windows.
Скачайте на ноутбук и установите желаемое приложение для навигации, например: SAS.Планета, Google Earth, 2Gis и т. п. Мы пользовались SAS.Планета (ее не нужно устанавливать), поэтому ниже будет приведена настройка приемника GPS именно в этой программе. В общих чертах настройка аналогичная в других программах.
Скачайте, распакуйте и запустите программу SAS.Планета. Выберите в окне программы команду «GPS > Настройки».
В открывшемся диалоговом окне «Настройки» на вкладке «GPS» убедитесь что в группе «GPS type» отмечен пункт «COM». В поле «Порт» выберите нужный номер порта, тот, о котором говорилось выше (в нашем случае COM8). Скорость можно не трогать. В соответствии с документацией при подключении по протоколу NMEA 0183 на скорости 4800 бод/с данные GPS передаются один раз в секунду. Нажмите на кнопку «GPS Вкл/Выкл», затем на кнопки «Применить» и «ОК».
В главном окне программы, на карте должно быть отображено Ваше местоположение, а на панели справа другие подробности (скорость, пройденный путь, высота над уровнем моря, азимут и др.).
Используем свой телефон как внешний GPS приемник. GPS over BT в помощь!
Всем привет! У многих наверняка есть ноутбуки и планшеты на Windows, где по каким-либо причинам необходимо подключение GPS, а внешний приемник покупать не хочется. И сегодня я расскажу как выйти из этой ситуации и настроить GPS-навигацию на таких переносных устройствах через обычный смартфон, который должен иметь GPS и Bluetooth. Все скрины кликабельны!
На смартфон требуется скачать с Google Play приложение под названием GPS over BT и устанавливаем его. Включаем блютус и GPS или делаем это в самом приложении после его запуска. На экране мы видим текущее точное время, координаты в двух формах, высота над уровнем моря, вашу скорость передвижения, азимут, расстояния.
Также если нажать кнопку меню, то можно перейти к просмотру спутников.
На ПК необходимо также наличие Bluetooth, иначе подсоеденить никак у вас не получится. Обычно в ноутбуках он бывает сразу.
Такой метод работает с таким навигационным софтом, как OziExplorer, SasPlanet, 2Gis, Google Earth и другими. А покажу я вам работу на примере САС Планеты и Озика.
Так, что-то я отвлекся от процесса 🙂 , связываем далее!
В компьютере щелкаем правой кнопкой на значок блютуса и в выпавшем меню нажимаем “Открыть параметры”
В открывшемся окне переходим во вкладку “СОМ-порты”
Теперь нам необходимо добавить сюда наш телефон. Напоминаю, блютус должен быть везде включен и устройства сопряжены. Жмем на кнопку “Добавить”. В новом открывшемся окошке выставляем флажком Исходящий тип добавляемого СОМ-порта. В списке пониже наше сопряженное устройство. В списках служб должна появиться надпись “BluetoothService”, на которую надо нажать, чтобы она выделилась. Жмем “ОК”
Это окошко закрывается и в списке COM-портов мы видим наш свежесозданный, которому присвоилось значение COM6. Запомните эту цифру. Она еще пригодится. Эти оба окна можно закрыть.
Открываем нашу любимую SAS Planet и переходим в настройки.
Там во вкладке GPS требуется выставить номер СОМ порта, в данном случае 6, GPS tybe должен стоять на значении СОМ. Скорость можно не трогать. Чтож, жмем на самую большую кнопку “GPS Вкл/Выкл”. Если все вышенаписанное было сделано правильно, вы увидите сразу в этом же окне справа обнаруженные спутники и передачу данных с ними. Справа в САС планете появится боковая панель, показывающая некоторые данные, те же самые, что и главный экран приложения на телефоне. Поздравляю! У вас теперь САС Планета напрямую работает через GPS. Удобно? Удобно!
Так она показывает местоположение на топокарте:
Вторая часто использующаяся программа у копарей – OZI Explorer. И в ней GPS таким же макаром тоже можно прикрутить! Как? Да очень просто! Заходим в настройки программы, переходим во вкладку “GPS”. Тут же недалеко есть кнопочка “Find GPS Port”
Жмем на нее и видим маленькое окно, где опять же требуется выставить параметры, иначе ничего работать не будет. GPS Type выставляем “Other”. Жмем на кнопку “Find GPS”. Система малость подумает, поварит и выдаст ниже на белом фоне лог, что нашел GPS в СОМ-порту №6. Можем это все дело закрыть.
Далее открываем карту, и кликаем по волшебной кнопке с молнией. И появилась стрелочка, указывающая на ваше местоположение. Теперь с этой прогой мы можем работать полноценно!