Что такое 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-порта на некотоых моделях КПК может не дать результата, а также приводить к неожиданным побочным эффектам: