Решение проблемы c GPS на планшетах под управлением Windows 8



Реп: (17)
Описание проблемы
Программы геопозиционирования предназначенные для "плиточного" интерфейса работают, а большинство десктопных программ геопозиционирования - нет. Именно так дела обстоят на устройстве 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 КБ )


Описание GnssDataInterface: 1, 2, скачать.

Сообщение отредактировал komok1965 - 26.07.13, 09:31
Причина редактирования: GnssDataInterface



Реп: (8)
Что-то народ не высказывается...
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



Реп: (17)
slade60 @ 30.05.2013, 16:33 *
нельзя ли в рамках Sensor2Com выдавать аналогичный Loсalizerу полный поток NMEA ?

Утилита SensorDiagnosticTool (которая входит в состав вроде бы driver developement kit) на нашем устройстве отображает какую-то строку NMEA, которую берёт вроде бы напрямую из сенсора. Стало быть возможность такая есть. Буду читать документацию, думаю реализуемо.



Реп: (6)
Device85 @ 26.05.2013, 18:06 *
Данные на второй порт будет передавать программа Sensor2COM. Она работает таким образом - при запуске отображается статус сенсора и (если сенсор передаёт данные - координаты текущего месторасположения).

Прога очень актуальная.В даный момент на планшете Acer W511 прога Sensor2COM считывает сенсор,прописывает COM порты,но при инициализации закрывает порт и выдаёт ошибку.
slade60 @ 30.05.2013, 16:33 *
По словам автора Localizerа он сам не формирует поток NMEA, а только собирает его от GNSS и отправляет на СОМ-порт

В этом то всё и дело,что у него прога поток дублирует.С его триалом у меня все навигационные проги подрубились



Реп: (8)
Спасибо за труд Автору Sensor2COM.
У меня работает Samsung 700T1C-H01.



Реп: (37)
Если в Sensor Diagnostic Tool щёлкнуть на строке с данными NMEA, чтобы они выделились, и нажать Ctrl+C, эти данные попадают в буфер обмена в виде текста. Потом их можно вставить в блокнот. На Acer w511 формируются 19 строк, со всевозможными идентификаторами:
Прикрепленное изображение



Реп: (6)
ask-list @ 01.06.2013, 13:19 *
Если в Sensor Diagnostic Tool щёлкнуть на строке с данными NMEA, чтобы они выделились, и нажать Ctrl+C, эти данные попадают в буфер обмена в виде текста. Потом их можно вставить в блокнот

Поток с нашего сенсора очень подробный.Для интереса прочитал поток со смартфона,оказалось 10 строк.И при этом холодный старт у него не большой+высокая относительная точность.Видимо у кого не все проги коннектятся через Sensor2COM,попросту не хватает данных.Если Device85 допилит свою прогу,то и на W511 Sensor2COM даст прослушать порт.Хотя вряд ли он будет допиливать,у него девайс другой ;)



Реп: (32)
Прога очень актуальная.В даный момент на планшете Acer W511 прога Sensor2COM считывает сенсор,прописывает COM порты,но при инициализации закрывает порт и выдаёт ошибку.

благодаря вашему совету в теме про w511 я поставил com0com, проверил его с помощью двухокон putty (под рукой была). В sensor2com указал номер порта (3) и скорость 38400 (по умолчанию в 2гис) после нажатия старт -выводит ошибку в строке статуса, но после запуска 2гис и включения там навигации он вполне сьедает данные а sensor2com пишет "sending data" больше особо неначем проверить.



Реп: (1)
Нужна помощь. Есть xe700t1c h01, sas планета которой пользовался на xp, Висте, Семерке. Разжувайте пошагово как чего установить, а то после фразы "Реализация" для меня простого шофера начинается темный лес))). Скачал com0com и sensor2com. но не догоняю что с ними делать(((



Реп: (6)
muxeu04 @ 02.06.2013, 16:05 *
после запуска 2гис и включения там навигации он вполне сьедает данные а sensor2com пишет "sending data" больше особо неначем проверить

Вот это новость!Доска зарядится,попробую.Мне 2ГИС важен для города и Гармин для зАгорода.Гармин никак не подрубается с этой версией Sensor2COM



Реп: (6)
ROMAN101980 @ 03.06.2013, 00:36 *
Нужна помощь. Есть xe700t1c h01, sas планета которой пользовался на xp, Висте, Семерке. Разжувайте пошагово как чего установить, а то после фразы "Реализация" для меня простого шофера начинается темный лес))). Скачал com0com и sensor2com. но не догоняю что с ними делать(((

В шапке и так всё расписано по полочкам.А проги можно здесь взять,они имеют свободное распространение

Прикрепленные файлы

Прикрепленный файлПроверка портов Tera Term v4.77.exe ( 10.8 МБ )
Прикрепленный файлsetup.exe ( 283.65 КБ )



Реп: (1)
Ежели бы я рассказал как калибруется АКПП на Komatsu HD-1500 меня бы врятли кто понял, хотя ИМХО это элементарно. А так смотрю на эти теперь уже 4 проги и шапку понимаю что мне на роду написано руль да гайки крутить. Кто нить не поленитесь напишите пжлст подробно - нажать то поставить / убрать галку там... а то фраза <цифровая подпись драйверов> ит.п. заставляет обычных пользователей просыпаться по ночам в холодном поту.



Реп: (6)
vasektds @ 03.06.2013, 03:42 *
Ежели бы я рассказал как калибруется АКПП на Komatsu HD-1500 меня бы врятли кто понял, хотя ИМХО это элементарно

И АКПП настроили бы,покурив русский мануал.Чтобы система не ругалась на неподписанный драйвер,нужно войти в тестовый режим.Параметры ПК-Общие-Особые варианты загрузки-Перегрузить сейчас.Диагностика-Дополнительные параметры-Параметры загрузки-Перезагрузить.Нажать F7.Затем установить com0com.Если потребуется,то в ней нажать добавить(Add) и посмотреть чтобы создалось два порта COM и в колонке стояли две галочки.Ну а дальше,как в шапке :D После перезагрузки тестовый режим отключается



Реп: (6)
muxeu04,
У тебя наверное 2ГИС схавал поток от триальной проги Localizer :) у меня так было.Нет никакого коннекта на любую пару портов.Я сейчас на Localizer-е двигаюсь,триал закончится,куплю.Это специфичная програмка,к ней кряк вряд ли писать будут,а 500р для такого планшета не деньги.Встречались в сети всевозможные GPS утилиты,которые можно декомпилировать,но смысл?За 500р? :rofl:



Реп: (17)
Проверил работу с 2ГИС - месторасположение на карте успешно отображается. Проверял в квартире, так что насчёт скоростей и марштуров ничего сказать с уверенностью не могу, но предполагаю что проблем не будет. Долго мучался пока в 2ГИС не нашёл закладку "навигация", где собственно нужно было нажать кнопку включения.

Насчёт получения готовых строк nmea из датчика - есть некоторые проблемы с реализацией - все найденные примеры используют иной api, с которым не совсем удобно работать из C#, но вроде постепенно решение вырисовывается. В крайнем случае можно будет переписать весь проект на C++, хотя в нём у меня опыта абсолютно нет.



Реп: (32)
У тебя наверное 2ГИС схавал поток от триальной проги Localizer :) у меня так было.Нет никакого коннекта на любую пару портов.Я сейчас на Localizer-е двигаюсь,триал закончится,куплю.Это специфичная програмка,к ней кряк вряд ли писать будут,а 500р для такого планшета не деньги.Встречались в сети всевозможные GPS утилиты,которые можно декомпилировать,но смысл?За 500р?

Localizer специально не ставил если только он стоит сразу или поставился с кем-то. Сейчас уже не могу попробовать, т.к. перезагрузился и драйвер перестал работать (как сделать чтобы работало всегда и желательно и то и то - всмысле и проверка драйверов и уже установленный драйвер, в исключения там его добавить можно?), но я вроде до перезагрузки проверял и там была вполне закономерность между нажатием старт и стоп в проге и работой навигации в 2гис.



Реп: (1)
Спасибо большое ничего не работает, подожду 15 года тогда sasовцы обещают поддержку сенсора, а 8ка за 50килорублей достала, ни на хр ни на висте, семерке почемуто не разу не доходило до того чтобы забираться в такие дебри, проще говоря все через ж.



Реп: (17)
muxeu04 @ 03.06.2013, 22:53 *
Localizer специально не ставил если только он стоит сразу или поставился с кем-то. Сейчас уже не могу попробовать, т.к. перезагрузился и драйвер перестал работать (как сделать чтобы работало всегда и желательно и то и то - всмысле и проверка драйверов и уже установленный драйвер, в исключения там его добавить можно?), но я вроде до перезагрузки проверял и там была вполне закономерность между нажатием старт и стоп в проге и работой навигации в 2гис.


На своём устройстве наблюдаю такое же поведение. Помогло отключение опции secure boot в настройках uefi (это некое подобие bios). В настройки uefi можно попасть через изменение параметров компьютера - общие - варианты загрузки.
Насколько могу судить, теперь уже установленные драйвера не проверяются (и не блокируются) повторно после перезагрузки, а при установке новых проверка подписи осуществляется, то есть система находится в относительной безопасности. Если вообще существует какая-то опасность от неподписанных драйверов, но это уже тема другой дискуссии



Реп: (32)
Я делал так:
Я писал уже.Параметры ПК-Общие-Особые варианты загрузки-перегрузить сейчас.Диагностика-Дополнительные параметры-Параметры загрузки-Перезагрузить.Нажать F7

хватило до перезагрузки.
Как сделать чтобы было как у вас точнее скажите пожалуйста:
На своём устройстве наблюдаю такое же поведение. Помогло отключение опции secure boot в настройках uefi (это некое подобие bios). В настройки uefi можно попасть через изменение параметров компьютера - общие - варианты загрузки.
Насколько могу судить, теперь уже установленные драйвера не проверяются (и не блокируются) повторно после перезагрузки, а при установке новых проверка подписи осуществляется, то есть система находится в относительной безопасности. Если вообще существует какая-то опасность от неподписанных драйверов, но это уже тема другой дискуссии



Реп: (1)
Долго мучался пока в 2ГИС не нашёл закладку "навигация", где собственно нужно было нажать кнопку включения.

Подскажи пожалуйста- где нашел кнопку? в упор не вижу. может есть какойто 2гис без навигации и с навигацией? у меня кажется версия без навигации стоит. как тогда отыскать версию с навигацией?



Реп: (17)
muxeu04 @ 03.06.2013, 23:56 *
Как сделать чтобы было как у вас
Путь примерно такой как для отключения проверки подписи, различия в конце:
Параметры ПК-Общие-Особые варианты загрузки-перегрузить сейчас.Диагностика-Дополнительные параметры-Настройки UEFI. После перезагрузки должен открыться экран настроек UEFI (визуально похож на bios), в нём нужно найти опцию secure boot и отключить. Думаю на разных устройствах эти UEFI могут отличаться. Не помню точно где в меню находится нужная опция, а планшета сейчас нет под рукой.
chester_chester @ 04.06.2013, 00:18 *
Подскажи пожалуйста- где нашел кнопку? в упор не вижу. может есть какойто 2гис без навигации и с навигацией? у меня кажется версия без навигации стоит. как тогда отыскать версию с навигацией?
Модуль навигации для 2ГИС устанавливается отдельно от основной программы, скачать можно с сайта разработчика: http://nsk.2gis.ru/plugins/
После установки в программе появится закладка "Навигация". Отключить и настроить модули можно в меню "Параметры". Обвёл эти два пункта на картинке
Прикрепленное изображение


Сообщение отредактировал komok1965 - 04.06.13, 11:51
Причина редактирования: замена bmp на jpg, [/SPOILER].


Полная версия   Текстовая версия

Помощь   Правила

Сейчас: 28.03.24, 14:57