Клуб +ЗА+ общество любителей навигации
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » PNA/PND » Навигационные устройства » Что нужно знать о COM портах
Что нужно знать о COM портах
DronДата: Суббота, 05.12.2009, 21:13 | Сообщение # 1
живу здесь
Группа: Проверенные
Сообщений: 545
Статус:
Константин Галичский
Всё, что вы хотели знать о COM-портах, но стеснялись спросить

GPS-приёмники – хоть уже и массовый продукт, но на рынке продукт пока ещё довольно новый, и потому обладающий рядом «детских болезней». К сожалению, сложившаяся на сегодняшний день инфраструктура взаимодействия разнообразного программного обеспечения с GPS-приёмниками порой превращает процесс самостоятельной настройки ПО пользователем в очень непростое занятие, требующее достаточно глубоких знаний совершенно неочевидных фактов.
Хотя программа Навител Навигатор и рассчитана на максимально автоматическую настройку работы с GPS-приёмниками, в ряде случаев может потребоваться ручная настройка, либо оптимизация настроек для более быстрой и удобной работы.
Что такое COM-порт
Прежде всего, для более глубокого понимания процесса настроек соединения с GPS-приёмником, необходимо уделить пару слов такому нелепому «отголоску прошлого», как COM-порты.
Ещё лет 15 тому назад, распространённый способ подключения самого разнообразного внешнего оборудования к компьютеру – это последовательный порт, то есть специальный стандартный разъём, как правило, расположенный на задней панели системного блока, а также специальный кабель – так называемый сериальный (последовательный) кабель RS-232. Этот способ обладал рядом существенных недостатков. По современным меркам, скорость передачи данных по такому кабелю крайне низкий – примерно до сотни килобит в секунду. Кроме того, на время физического соединения разъёмов необходимо было выключать оборудование, а сами эти стандартные разъёмы крепились друг у другу винтами для надёжности и имели довольно громоздкие размеры.
На тогдашних компьютерах обычно имелись один или два таких аппаратных порта для подключения внешнего оборудования к компьютеру, которые традиционно назывались COM1 и COM2. Иногда устанавливались дополнительные COM3, COM4 и т.д. При настройке программного обеспечения пользователю необходимо было не перепутать и самостоятельно выбрать именно тот порт, к которому подключено нужное оборудование, правильно настроить скорость передачи данных, а также ряд других загадочных параметров, глубокий смысл которых всегда понятен лишь узким специалистам. Для успешного подключения аппаратуры все эти параметры надо было откуда-то узнать либо подобрать экспериментально, поскольку никакого автоматического конфигурирования (plug and play, «подключи и играй») тогда ещё фактически не существовало. Более того, эта схема подключения допускала подключение любого ПО к любому внешнему оборудованию, даже абсолютно несовместимому, что и создавало почву для самых разнообразных ошибок в процессе настроек.
В настоящее время этот архаичный способ соединения, изначально рассчитанный скорее на специалиста, практически полностью вытеснен современным стандартом USB, который лишён всех вышеупомянутых недостатков. Но к сожалению, современные стандарты совместимости соединения разнообразного GPS-оборудования и не менее разнообразного программного обеспечения исторически сформировались вокруг концепции теперь уже архаичных COM-портов.
Дело в том, что изначально GPS-оборудование было только внешнее, и соединялось оно с компьютером, как и было описано выше – через сериальный кабель, подключённый к одному из аппаратных COM-портов. Соответственно от пользователя при настройке ПО требовалось правильно выбрать номер компорта и настроить скорость передачи данных. Основной стандарт передачи информации от GPS-приёмника к программе, который возник в то время, и который до сих пор широко применяется, называется NMEA-0183. Это стандарт фактически и предписывает разработчикам даже самой современной аппаратуры и ПО до сих пор обмениваться данными через COM-порты – несмотря на то, что на современных компьютерах, а тем более на КПК, давно уже царит стандарт USB. Более того, в последнее время гораздо чаще GPS-приёмник устанавливается прямо внутри корпуса КПК, то есть между ним и КПК, собственно говоря, никакого внешнего соединительного кабеля нет вовсе!
Виртуальные компорты
Компьютерная индустрия нашла выход из положения – были выдуманы «виртуальные» COM-порты. То есть внутреннее устройство КПК, такое как встроенный GPS-приёмник, чисто программно имитируется как COM-порт, не являясь таковым в аппаратном плане. Но программе, рассчитанной на работу с COM-портами, собтвенно и нет никакой разницы, с каким COM-портом она вынуждена работать – с аппаратным или его виртуальной имитацией. Этим самым и обеспечивается совместимость старых GPS-программ с новым GPS-оборудованием.
Однако, сложность конфигурирования от этого существенно не меняется: от пользователя по-старинке всё так же требуется чуть ли не вручную настраивать COM-порты, хоть и ставшие уже совершенно виртуальными сущностями, никак уже не связанными со старинными громоздкими разъёмами на задней панели системного блока. Дело в том, что с точки зрения ПО, что прежние аппаратные коммуникационные порты, что виртуальные, как и прежде, выглядят совершенно безлико, различаясь лишь условными номерами, которые назначаются производителями КПК на какой-то совершенно случайной основе. Например, ASUS обычно размещает приёмник на COM5, а у PocketLOOX 560 приёмник виден под именем COM8. Соответственно программа, желающая получать данные от GPS-приёмника, изначально не имеет никакой достоверной информации о том, под каким условным номером фигурирует COM-порт, соответствующий приёмнику, на данном КПК.
Хотя автоматический поиск приёмника среди всех имеющихся COM-портов и принципмально возможен, но процедура опроса всех этих портов громоздкая и потенциально ненадёжнуя. Ведь поскольку устройства, видимые в системе как СOM-порты, могут быть самыми разнообразными устройствами, к GPS отношения совершенно не имеющие, их реакция на подобный опрос может оказаться совершенно непредсказуемой. Например, на КПК могут быть COM-порты, связанные с внутренним сотовым модемом (на коммуникаторах), с ИК-портом, с USB (используемым программой ActiveSync) и так далее. К сожалению, обращение к этим портам со стороны программы, рассчитанной на взаимодействие с совсем другим видом аппаратуры – с GPS-приёмником, чревато потенциальными перебоями в работе вышеуказанных устройств, а в конечном итоге и сбоями самой процедуры опроса, и даже вплоть до зависания КПК. Именно по этой причине автоматический поиск COM-порта на некотоых моделях КПК может не дать результата, а также приводить к неожиданным побочным эффектам: например, к включению ИК-порта или BlueTooth.
Для подобных случаев в программе Навител Навигатор предусмотрена возможность пользователю вручную настраивать набор COM-портов, по которым допускается осуществлять поиск GPS-приёмника. К сожалению, для успешной ручной настройки требуется знание ряда тонких моментов, обзору которых и посвящается оставшаяся часть этой статьи.
Автоматический поиск
Включение соединения с GPS-приёмником в программе Навител Навигатор сперва запускает процедуру автоматического опроса COM-портов. Во время поиска приёмника в статусной строке на странице «Спутники» показываются соответствующие надписи. Сигналом успешного окончания поиска является смена статуса на “NMEA-0183 на COMx” (где x – это номер определившегося порта).
В случае работы со встроенным GPS-приёмником, с подключением через внешний кабель, через разъём CompactFlash или SD/MMC, при «правильных» настройках время автоматического поиска обычно занимает не более секунды. Соединение через BlueTooth (оно описывается ниже) может занять чуть большее время. Существенные задержки появления вышеуказанной надписи свидетельствует о том, что автоматическая процедура требует ручного вмешательства.
Захват спутников
Для успешного получения координат необходимо не только успешно открыть правильный порт с правильными настройками, но и выполнить вторую фазу соединения – дать приёмнику «захватить спутники», то есть принять сигнал и полностью расшифровать его. Эта фаза может занять от нескольких секунд но десятка минут в зависимости от состояния приёмника и условий приёма.
Итак, с момента успешного определения «правильного» COM-порта начинается работа самого GPS-приёмника – захват спутников. Данная статья не рассматривает тех тонких ньюансов, которыми изобилует и этот загадочный и труднопредсказуемый процесс, отсылая читателя к другим статьям соответствующей тематики. Здесь же необходимо заострить внимание только на одном важнейшем моменте: за процедуру захвата спутников отвечает исключительно сам GPS-приёмник, а не программа. GPS-приёмник – это источник готовых, уже полностью обработанных данных (самих координат, либо информации о том, что координаты не определены), а программа только лишь отображает их.
В процессе захвата на странице «Спутники» можно видеть отображение промежуточных результатов работы по захвату спутников: предполагаемое распределение спутников на небосводе, уровень принимаемого сигнала от каждого из них. Круги красного цвета на небосводе обозначают спутники, сигнал которых ещё не может быть использован приёмником для вычисления координат, зелёные – сигнал которых уже расшифрован и пригоден для вычисления. Координаты начнут определяться, как только «позеленеют» как минимум четыре спутника.
Если столбики, отмечающие уровень приёма, очень низкие или отсутствуют вовсе, необходимо выйти на максимально открытое место, иначе захват будет длиться бесконечно. Как правило, в помещениях GPS-приёмники вообще не способны определять координаты, особенно при самом первом включении (так называемом «холодном старте»).
Итак, самое первое включение GPS-приёмника должно производиться вне помещений, на максимально открытом месте. В некоторых случаях длительность холодного старта может занимать до 10-20 минут. Последующие захваты спутников будут занимать намного меньшее время – обычно десятки секунд.
Если же приёмник оказывается не способен произвести захват спутников даже на открытом месте более 20 минут, то это свидетельствует о его неисправности, или о его неправильной внутренней настройке. В этом случае необходима помощь специалиста, например, из сервисного центра.
А теперь давайте вернёмся от особенностей работы самой GPS-аппаратуры к программе Навител Навигатор и тем её настройкам, которые отвечают за поиск COM-порта.
Выбор портов
После того, как номер COM-порта становится известным, рекомендуется в настройках программы отключить опрос всех остальных портов. Это снизит и время подключения, и вероятность потенциальных сбоев при обращении к другим портам.
Если же на данном КПК возможно попеременное подключение разных приёмников через разные порты (например, по сериальному кабелю, через BlueTooth, через разъём CompactFash или SD/MMC), то имеет смысл в списке опрашиваемых портов оставить все эти соответствующие порты выбранными.
Блокировка портов
Как уже отмечалось, исторически механизм COM-портов был рассчитан исключительно на те самые аппаратные порты для подключения внешних устройтв к компьютеру, которые описывались выше.
Нескоординированное взаимодействие сразу двух и более программ с одним внешним устройством по последовательному кабелю практически невозможно, поскольку поступающие данные как бы перемешиваются друг с другом в случайном порядке, нарушая работу как устройства, так и программ. Поэтому в идеологии СOM-портов утвердилось такое правило: с конкретным COM-портом может работать только одна программа одновременно. Пока эта программа не освободит (не закроет) открытый ею COM-порт, ни одна другая программа не сможет его открыть – этому будет препятствовать сама операционная система.
В применении к GPS-приёмникам это приводит к следующему эффекту: если какое-то стороннее приложение уже работает с приёмником, то есть открыло соответствующий COM-порт, Навител Навигатор не сможет открыть этот же самый порт, и соответственно получать от приёмника координаты. В этом случае процедура автоматического опроса будет длиться бесконечно долго, пока стороннее приложение не освободит порт или не будет само закрыто.
Итак, Навител Навигатор не должен запускаться одновременно с другими GPS-программами. Поскольку посторонние приложения могут оставаться в памяти в «свёрнутом» состоянии, рекомендуется специально убедиться, что эти приложения именно закрыты, а не «свёрнуты». Самое надёжное, хоть и радикальное средство – это софт-ресет КПК.
Исключением из данного правила «один порт – одно приложение» является так называемый «программный порт» GPS API, выбираемый в настройках операционной системы. Этот порт допускает одновременную работу с ним любого числа приложений. Подробнее о GPS API будет рассказано в конце статьи.
Побочные эффекты опроса
По умолчанию, Навител Навигатор настроен на опрос всех портов от COM0 до COM19, за исключением тех портов, которые опознаются как связанные:
- с сотовым модемом,
- с ИК-портом,
- с исходящим и входящим портами BlueTooth
Включение опроса первых двух устройств, как уже отмечалось выше, может привести к потенциальным побочным эффектам, поэтому крайне не рекомендуется выбирать их в списке вручную.
BlueTooth
Что касается подключения через BlueTooth, то нужно включать только исходящий порт BT – при условии, что действительно используется соединение с внешним GPS-приёмником по BlueTooth. В противном случае и входящий, и исходящий порты следует оставлять исключёнными из списка опроса.
Следует иметь в виду, что на различных моделях КПК могут оказаться установленными самые различные версии стека (программного обеспечения) BlueTooth – от WIDCOMM/Broadcom или от Microsoft – отличающиеся поведением. При открытии портов BlueTooth, в зависимости от этих версий, возможны самые различные нежелательные побочные эффекты, включая как неожиданное появления окна BT Manager (на очень старых версиях стека от WIDCOMM/Broadcom – вплоть до зависания КПК), так и несанкционированное пользователем включение BlueTooth, сопровождающееся более быстрым разрядом аккумулятора, а также потенциальными проблемами с безопасностью данных.
Если же GPS-приёмник действительно соединяется по BlueTooth, то опрос исходящего порта должен быть, несомненно, включён. Кроме того, настройка «Включать BlueTooth перед соединением» будет дополнительно гарантировать, что опрос COM-портов будет начинаться только после включения BT-передатчика на КПК вне зависимости от особенностей версии стека WIDCOMM/Broadcom или Microsoft.
Скорость передачи данных
Изначально стандарт NMEA-0183 предписывает единственную скорость передачи данных – 4800 кбит/c. Однако в ряде случаев этой скорости бывает недостаточно, чтобы за стандартный секундный интервал успеть прокачать все данные. По этой причине зачастую производители GPS-приёмников настраивают их на более высокие скорости передачи данных.
Если программа настроена при этом на какую-то другую скорость, то данные, поступающие от GPS-приёмника, могут читаться c повреждениями. К счастью, в большинстве случаев драйвера виртуальных COM-портов, используемых производителями КПК, устроены так, что скорость передачи рассматривается ими как совершенно формальный параметр, ни на что реально не влияющий. То есть при любых настройках данные читаются без повреждений и задержек.
Тем не менее, иногда наблюдаются «рецедивы», особенно на устаревших моделях КПК. В этом случае скорость требуется выставлять «правильно». К сожалению, автоматически её определить невозможно, то есть правильное значение нужно откуда-то узнать или подобрать.
Агрессивный и пассивный
В программе Навител Навигатор имеется настройка «способ чтения данных» – агрессивный и пассивный.
Пассивный метод создаёт меньшую нагрузку на процессор КПК (а это означает несколько меньшее энергопотребление), но не способен работать с некоторыми драйверами виртуальных COM-портов, программный интерфейс которых реализован не полностью, либо с грубыми ошибками.
Агрессивный способен работать с любыми известными драйверами. Именно поэтому он и выбран по умолчанию.
NMEA-0183
Протокол NMEA-0183 в настоящее время является основным индустриальным стандартом для взаимодействия ПО с GPS-приёмником, поэтому практически все современные приёмники поддерживают его.
Вот несколько фактов, которые полезно знать о NMEA-0183, поскольку это может помочь в диагностике возможных технических проблем.
1. Этот протокол по существу «односторонний», то есть данные передаются только в направлении от приёмника к программе. В принципе, программа может посылать запросы и в обратном направлении – к приёмнику – например, для настройки и переключения режимов работы, но это практикуется крайне редко и, как правило, выходит за рамки самого стандарта NMEA. (Навител Навигатор – не практикует.) Этот факт даёт возможность двум и более программам безопасно, совершенно не мешая друг другу, считывать данные из приёмника. Но, как уже выше упоминалось, такое разрешено далеко не на всяком COM-порте, а только на «программном порте» GPS API.
2. Данные поступают порциями раз в секунду, сообщая программе точное время, новые координаты широты и долготы, скорость, направление движения, высоту над уровнем моря и т.д. Величина периода в принципе может быть и иной, но, как правило, это ровно одна секунда.
3. Поступающие данные выглядят как обычные текстовые строки, разделённые друг от друга стандартными символами перевода строк – как в обычных текстовых файлах. Эти строки называются «сообщениями» (NMEA sentences). Каждое сообщение начинается с символа “$”, затем несколько заглавных латинских букв, идентифицирующих тип сообщения, за которыми следуют информационные поля, разделённые запятыми. В самом конце – контрольная сумма всего сообщения.
4. Стандарт NMEA-0183 описывает огромное количество видов сообщений, и лишь относительно малая их часть относится к GPS-приёмникам. Остальная часть стандарта относится к другим видам морских навигационных сенсоров – атомным часам, эхолоту, радару, магнитному компасу, датчикам силы и направления ветра, температуры воды, приёмнику сводки погоды и т.д.
5. GPS-приёмники обычно передают только сообщения, соответствующие GPS-приёмникам, то есть сообщающие время, широту-долготу, высоту над уровнем моря, горизонтальную скорость, направление, информацию об используемых спутниках и т.д. Есть и исключения: например, некоторые приёмники Garmin, снабжённые встроенными электронными магнитными компасами, выдают также и сообщения, характерные для корабельного магнитного компаса.
6. Идентификаторы сообщений, относящихся к GPS, начинаются на буквы “GP”, то есть их текстовые строки начинаются на “$GP”. Пример такого сообщения:
"$GPRMC,181212,A,5548.4647,N,03730.3748,E,0.0,0.0,280403,9.5,E,A*11\r\n" – здесь в информационных полях указано текущее время 28/04/03 18:12:12, широта N 55 48.4647’ и долгота E 037 30.3748’.
7. В стандарте есть несколько частично дублирующих друг друга GPS-сообщений, по какому-то случайному принципу содержащие самые разные сочетания информационных полей, причём ни одно из них не содержит всю информацию сразу. При этом разные приёмники (в том числе и в зависимости от своих аппаратных настроек) могут передавать любые из этих сообщений и в любом взаимном порядке, что может служить дополнительным источником для определённого рода трудноуловимых ошибок в ПО. Тем не менее, Навител Навигатор рассчитан на то, что сообщения могут приходить в самом неожиданном порядке, и программа максимально готова к работе даже с неполным набором сообщений.
8. Далеко не все приёмники передают координаты в датуме WGS84. В частности, приёмники Garmin могут выдавать координаты в том датуме, который указан во внутренних настройках. В этом случае Навител навигатор будет показывать искажённое местоположение с ошибкой порядка 100 м и более.
Стандарт NMEA имеет морское происхождение: он описывает всю инфраструктуру сетеобразного соединения всех судовых электронных сенсоров с единым устройством отображения всех данных на капитанском мостике. Индустрия, сложившаяся вокруг GPS, использует лишь малую часть этого стандарта – просто за неимением своего собственного более специализированного отраслевого стандарта.
Однако NMEA-0183 из-за своих морских корней имеет ряд ограничений, не удовлетворяющих GPS-индустрию. В частности, в этом протоколе не предусмотрено способа сообщения информации о вертикальной скорости, крайне необходимой, например, в авиационных применениях. Эта проблема решается с помощью применения специальных протоколов, не являющихся общеиндустриальными стандартами, а специфичными для конкретных производителей – например, Garmin, Trimble, SiRF, u-Blox и др.
Другие протоколы
Помимо протокола NMEA-0183 программа Навител Навигатор поддерживает и протоколы, специфичные для приёмников Garmin и SiRF binary. Эти приёмники могут работать в NMEA-0183, но могут быть и переключены специальными средствами в свои «фирменные» протоколы.
Если приёмник работает в одном из этих протоколов, а Навител Навигатор настроен по умолчанию в NMEA-0183, то соединение просто не установится. В этом случае необходимо в настройках программы включить сканирование соответствующих протоколов.
Следует отметить, что Навител Навигатор сам по себе не имеет функции переключения протокола, используемого GPS-приёмником для передачи данных. Такое переключение может осуществляться только специальными средствами, рассчитанными на конкретные типы приёмников. Навител Навигатор лишь способен автоматически диагностировать (если это разрешено в настройках), что приёмник по какой-то причине переключён на тот или иной протокол, отличный от NMEA, и сразу работать с этим протоколом, не вынуждая пользователя специально переключать приёмник обратно в NMEA-0183.
И Garmin, и SiRF binary кардинально отличаются от NMEA-0183 тем, что они основаны на обмене не текстовыми, а чисто двоичными данными, а также тем, что они двусторонние, то есть в них программа посылает явным образом запросы в приёмник и получает от него ответные пакеты. Это означает, что сканирование COM-портов с такими протоколами потенциально более опасно, чем для одностороннего NMEA-0183: программа посылает явным образом запросы в сканируемые COM-порты и затем ожидает характерный ответ. Отправка запроса в некоторые из сканируемых COM-портов может спровоцировать нежелательные побочные эффекты, уже обсуждавшиеся выше.
Поэтому, если известно, что приёмник работает в NMEA-0183 (а это подавляющее большинство случаев), то сканирование других протоколов рекомендуется не включать. Помимо повышенного риска сбоев, сканирование неиспользуемых протоколов ещё и увеличивает время сканирования.
Довольно распространено поверье, что переключение чипсета SiRF III в протокол SiRF binary ускоряет время захвата спутников. Очевидно, это не так, поскольку время захвата определяется совершенно иными факторами, в число которых конкретный транспорт доставки уже определённых координат не входит. Тем не менее, использование двоичных протоколов вместо громоздкого текстового NMEA-0183 действительно способно немного (эффект практически не заметен) уменьшить время доставки данных, но это касается только уже определённых координат.
Проблемы с протоколом, провоцируемые сторонними приложениями
Известно, что одна из бета-версий iGO/MioMap грешила активным переключением режимов приёмников SiRF III. В результате, после её запуска все иные GPS-приложения, рассчитанные на работу через NMEA-0183 перестают работать с GPS-приёмником. Способы решения:
- восстановление настроек чипсета SiRF с помощью сторонних программ (типа SirfTech),
- возврат к заводским настройкам путём удаления аккумулятора КПК на сутки (при этом сбрасывается состояние всего КПК – теряются все настройки, пользовательские файлы, установленные программы и т.д.)
Во избежание повторения проблемы требуется ручная настройка iGO. А именно, в файле SYS.TXT, лежащий в папке iGo/MioMap, в раздел [gps] необходимо добавить строчку «set_messages=0». Если такого файла нет, его необходимо создать.
Запись в журнал
Прямым инструментом для диагностики всех вышеперечисленных проблем соединения программы с GPS-приёмником является запись в журнал. Включение соответствующей настройки программы приводит к тому, что все действия программы над COM-портами достаточно подробно протоколируются, включая информацию о данных, считываемых из COM-портов.
Журнал представляет собой текстовый файл gps_log.txt, хранящийся в корне файловой системы КПК. В процессе работы в этот файл в конец добавляется очередная порция информации, то есть старая информация никогда не пропадает даже после перезапуска программы.
Обязательно выключайте запись в журнал после решения проблемы, иначе он будет постоянно расти в размерах, пока не займёт всю свободную память! Ненужный файл можно просто удалить.
Содержимое файла вполне доступно для самостоятельного анализа, особенно после изучения данной статьи. Тем не менее, если Вы испытывете сложности с решением проблемы установления соединения, а анализ журнала не даёт искомой подсказки, просто свяжитесь со службой технической поддержки (support@navitel.su) приложив к электронному письму записанный журнал.
COM-порты в GPS API
Выше в этой статье подробно рассматривались проблемы, связанные со стихийно сложившимся в GPS-индустрии стандартом взаимодействия на основе такого анахронизма, как COM-порты.
Однако, начиная с MS Windows Mobile 5, в операционной системе наконец-то появилась встроенная поддержка GPS, что является безусловно позитивным шагом по приведению стихии в цивилизованное русло. Однако, вместе с тем возросло и количество факторов, которые необходимо понимать для успешной диагностики проблем.
Для начала рассмотрим в общих чертах архитектуру этой новой подсистемы Windows Mobile. GPS API является по своей сути очередным системным «арбитром», выступающим в роли промежуточного слоя, абстрагирующего программы, желающими работать с приёмником, от самого GPS-приёмника.
Центральный модуль GPS API– это «ядро», получающее данные от так называемых GPS-драйверов, либо от архаичных COM-портов, которые теперь называются в терминологии GPS API «аппаратными». К сожалению, производители GPS-оборудования пока не спешат принимать новую инициативу Microsoft, предполагающую поставку GPS-драйверов вместо реализации виртуальных COM-портов. Но на этот случай GPS API умеет самостоятельно получать GPS-данные от традиционного COM-порта GPS-приёмника.
Ядро GPS API принимает и разбирает данные NMEA-0183 и затем транслирует их всем заинтересованным приложениям через программный интерфейс (API). Поскольку большинство существующих приложений пока ещё не готово к работе с этим интерфейсом, GPS API эмулирует для них свой COM-порт, который называется «программным». Получающаяся структура на первый взгляд получается как бы «меняю шило на мыло» - то есть данные из одного порта просто ретранслируются в другой порт. Но это не совсем так.
Во-первых, «программный» порт выгодно отличается от «аппаратного» тем, что он может открываться любым количеством приложений одновременно (то есть GPS API выступает в роли своеобразного «GPS-splitter»). Во-вторых, в системном реестре стандартизован ключ, сообщающий приложениям номер программного COM-порта. То есть пользователю теперь не нужно настраивать каждое из GPS-приложений по отдельности, а достаточно выбрать «правильные» номера COM-портов только в одном месте – в настройках Windows Mobile.
Более того, если GPS-приёмник встроен в КПК, то производитель обычно делает так, что «аппаратный» порт изначально правильно указан в реестре.
Всё это позволяет эффективно решать проблемы совместимости, равно как безболезненное соединение с приёмником без головной боли «какой порт открыть», так и проблему одновременного доступа к одному приёмнику из нескольких программ. Более того, эта технология позволяет приложениям получать координаты через стандартизованный и гораздо более удобный программный интерфейс (application programming interface, API), а не через архаичные и разношёрстные COM-порты, а разработчикам GPS-оборудования – постепенно перейти к более прогрессивной технологии специализированных GPS-драйверов. В конечном итоге решается и проблема разномастных GPS-протоколов: в них вообще исчезает всякая потребность.
Навител Навигатор поддерживает работу как через программный интерфейс GPS API, так и «традиционную» работу через COM-порты.
В случае работы через COM-порты следует учитывать следующие моменты:
1. В настройках Windows Mobile «аппаратный» COM-порт всегда должен соответствовать реальному устройству. Если приёмник встроенный, то эту настройку вообще трогать не надо – производитель КПК изначально её прошивает правильно. Если это, например, BT-приёмник, то «аппаратным» COM-портом будет исходящий порт BlueTooth.
2. В настройках Windows Mobile «программный» COM-порт можно выбирать по сути произвольно, лишь бы этот номер был ещё не занят каким-то другим устройством.
3. «Аппаратный» COM-порт не может быть открыт более чем одним приложением одновременно. Одним из таких приложений выступает и GPS API. То есть если возникает конфликт из-за этого порта между Навител Навигатор и GPS API, «повезет» только одному из них. Если порт первым захватит Навител, то GPS API и соответственно все сторонние приложения, прямо или косвенно использующие его, работать не смогут.
4. По этой же причине, в идеале, «аппаратный» порт должен быть занят либо GPS API, либо просто временно не занят. А все приложения должны обращаться только в «программный» порт.
5. Что будет, если оба порта, и «программный», и «аппаратный» в Навител Навигатор одновременно включены в список сканирования? В этой ситуации исход случаен. Допустим, первым окажется открыт «программный» порт, что вынудит GPS API в свою очередь открыть «аппаратный» порт. Тогда попытка открыть «аппаратный» не удастся, и программа будет работать через «программный» порт. В противном случае, опережающее открытие «аппаратного» порта не даст GPS API работать, и не откроется «программный». Но и в этом случае программа получает доступ к GPS-приёмнику. То есть Навител Навигатор будет работать в любом случае, а вот GPS API и все приложения, привязанные к «программному» порту – как повезёт. Впрочем, не исключена и ситуация, когда оба порта окажутся неработоспособными из-за взаимной блокировки. Поэтому, опять-таки, рекомендуется в списке сканируемых портов оставлять только что-то одно.
Как бы то ни было, прямой доступ Навител Навигатор к аппаратному порту тоже имеет смысл:
1. Если приёмник работает в протоколе Garmin или SiRF binary. GPS API не поддерживает этих протоколов.
2. Приёмник может поддерживать сообщения NMEA, которые не подерживаются GPS API, но поддерживаются Навител Навигатор. К их числу относятся сообщения DGPS (дифференциальные поправки), магнитного компаса и эхолота.
Выбор – за пользователем.

Форум » PNA/PND » Навигационные устройства » Что нужно знать о COM портах
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2024Используются технологии uCoz