Как узнать порт модема?

T>Вопрос: Как правильно программно определить местонахождение устройства в системе?
T>По крайней мере я хочу чтобы при запуске приложения как нить опрашивать порты чтобы узнать, то ли это устройство.
Сталкивался с точно такой же проблемой. До общего решения так и не допетрил, бо не сильно фатально было. Приведу prolific-specific решение
T>Пока реализовал так:
T>* Спрашиваю при пуске приложения систему о имеющихся COM портах — получаю список
T>* Поочередно отправляю в каждый порт команду типа ХХХ жду секунду ответа YYY
T>* откуда получаю ответ тот порт и использую
Опрашивать все порты чёсом — это плохое решение. При наличии в системе корявых драйверов встроенного блютуса (а в ноутбуках они с большой вероятностью будут корявыми, по-другому драйверов в фирмах типа broadcom не пишут), опрос эмулированных блютусных COM-портов будет занимать несколько МИНУТ.
T>Понимаю что так нехорошо, мало ли что в других устройсвами пожет произойти (у меня, например, модем после такой операции иногда приходится перезапускать)
Шли какую-нибудь «модемонейтральную» команду, а-ля ATI1. Ответить на неё из своего девайса можешь как угодно.
T>Подскажите в какую сторону копать?
Открой каталог реестра «HKLM\SYSTEM\CurrentControlSet\Enum\USB\Vid_067b&Pid_2303», в его подкаталогах обнаружишь маппинг пролификов на номера COM-портов.
Если нет такого каталога — узнай Vid и Pid своего USB-хвоста, и ищи по ним.

Большинство компьютерных программ для работы с сотовыми телефонами используют COM-порт.

Говоря на простом языке — сом-порт это дверь через которую несчастные электроны переносят данные от сотового к компьютеру и назад 🙂 В этой ситуации ясно, что чтобы электроны знали дорогу — им надо знать номер двери, а то занесет к соседке и потеряются 🙂

Шутки-шутками, но человеку, перед которым до этого никогда не стояла задача определить номер COM-порта, через который программе надо работать с сотовым — такому человеку сразу и не понять что делать. Поэтому я покажу на конкретном примере — во-первых, как определить сам сом-порт, а во-вторых, как вручную попробовать некоторые команды (АТ-команды) для работы с сотовым.

Если Вы не знаете как подключить сотовый телефон к компьютеру, то вот Вам «Подключение сотового телефона к компьютеру»

Итак, у меня сотовый телефон модели Sony Ericsson Z310i, подключен к компьютеру через блютуч адаптер. Драйвера на адаптер BlueSoleil 1.6.1.4. И все это на Win XP.

Активирую на телефоне блютуч, открываю основное окно программы от BlueSoleil:

Как видите на картинке, мой сотовый программа-драйвер увидела. Теперь я наведу мышкой на обозначение своего сотового и сделаю «двойной клик” — чтобы программа показала, какие сервисы мне доступны. Как Вы можете видеть в верхней части окна, третий значок слева — это и есть «СОМ-порты” или еще говорят «сериал-порт” (последовательный порт).

Все Ок — сом-порты работать будут. Осталось узнать какой же номер будет у СОМ-порта, через который можно работать с сотовым телефоном. Для этого надо активировать эту связь — просто кликаю мышкой на третий слева значок:

И чтобы узнать номер СОМ-порта через который идет связь — навожу мышкой на значок своего сотового, нажимаю на правую кнопку, и в выпавшем меню выбираю «Состояние”:

И видим такое окно, на котором все ясно видно:

Красным я специально подчеркнул те детали, на которые нам стоит обратить внимание — это наш сотовый Sony Ericcson Z310i и находится он на порту COM4.

Т.е. на самом деле ничего сложного тут нет. Но если у Вас другая ситуация — и программа-драйвер не подсказывает Вам ничего. Тогда нужно зайти в диспетчер устройств и самому посмотреть. какие есть в системе COM-порты и возможно модемы. Делается это так — «на рабочем столе” находим значок «Мой компьютер”, наводим на него мышкой, нажимаем на правую кнопку — выпадает меню:

Выбираем «Свойства”. Откроется окно «Свойства системы”, переходим на вкладку «Оборудование” :

и нажимаем на кнопочку «Диспетчер устройств”. И увидим из чего состоит наш компьютер:

В списке «Порты” Вы можете видеть наш COM4. А вообще Вы видите сколько СОМ-портов в компьютере. Бывают ситуации, когда драйвер позволяет подключить Ваш сотовый телефон или GSM-модем именно как модем — тогда смотрите его в списке «Модемы”. И если также, через правую кнопку мышки вызвать свойства конкретного модема, то на вкладке «Модем” можно увидеть тот самый номер COM-порта:

Ну хорошо. Номер СОМ-порта мы определили. Теперь давайте почувствуем себя полными «профи” и поработаем с сотовым напрямую, с помощью специальных команд. Для этого вызовем простую программу HyperTerminal — это стандартная программа для WinXP. Находится эта программа здесь:

Запускаем ее и получаем первый экран:

Вводим название сеанса связи с сотовым — пусть будет «test4″ . И нажимаем ОК.

Здесь нам надо выбрать наш COM-порт — если помните это COM4. И также нажать ОК.

Надо выбрать параметры соединения. Но лучше ничего не трогать, те значения, которые уже стоят по умолчанию, как правило подходят. В редких случаях можно поменять «Скорость” — иногда оборудование жестко запрограммировано на работу только на какой-то одной скорости (например, для Сименс C45 скорость только 19200). Нажимаем ОК. Окроется основное окно программы HyperTerminal и сразу установится связь через COM4:

Теперь подадим несколько команд сотовому телефону. Это очень просто 🙂 Сперва я дам команду ATZ. Все команды пишутся латинскими буквами и подтверждаются нажатием на «Enter”. Затем я даю команду ATI :

потом я прошу сотовый показать мне IMEI-код командой AT+CGSN. И последняя команда AT+CUSD=0,”*100#”,15 — это USSD-запрос баланса. Если плохо видно — просто нажмите на картинку, она увеличится.