Как убедиться, что модем уже подключен к телефонной линии

Я только что заметил, что если модем не был подключен к телефонной линии, и вы открываете SerialPort и отправляете AT-команду типа "AT\r\n", тогда ваше приложение зависает примерно на +20 секунд. Как я могу убедиться, что телефонная линия уже подключена к модему?


person Jalal    schedule 03.03.2011    source источник
comment
Пожалуйста, не говорите, что клиент должен наклониться и посмотреть на чехол, чтобы проверить это! :D   -  person Jalal    schedule 03.03.2011
comment
Зависит от того, что вы имеете в виду. С точки зрения программного обеспечения будет невозможно определить разницу между: а) кабелем, не подключенным, б) кабелем, но обрезанным наполовину, в) кабелем, но не подключенным на другом конце, г) кабелем. подключены к обоим концам, но другой конец не подключен. Поэтому я не думаю, что эта физическая проверка возможна.   -  person mike    schedule 03.03.2011
comment
Если вы просто пытаетесь избежать зависания, вы могли бы запускать вызовы модема в фоновом потоке? (при условии, что это программа пользовательского интерфейса, а не консольное приложение). " rel="nofollow noreferrer">API телефонии будет иметь для этого функцию, хотя для этого нет (предоставленной Microsoft) оболочки .NET, только в Google появляется коммерческая оболочка (не пробовал, не могу рекомендовать)   -  person Rup    schedule 03.03.2011
comment
@mmye: ЧТО!!! Я просто имею в виду, что если в телефоне есть какой-либо сигнал, значит, модем уже подключен, иначе нет! : Д . @Rup: Спасибо, но это надежный способ ведения дел. Я имею в виду ожидание исключения или ошибки на SerialPort, чтобы сказать Нет телефонной линии? :-? не хорошая идея. Я ищу лучший способ! Например, Windows, когда вы пытаетесь подключиться с помощью коммутируемого доступа, и он немедленно предупреждает вас! :-‹   -  person Jalal    schedule 03.03.2011


Ответы (2)


Вы можете открывать и закрывать только SerialPort, связанный с устройством (например, с модемом). Если он не может открыть его, значит, он недоступен.

person Jax    schedule 04.03.2011
comment
Как я уже сказал в предыдущем комментарии, это надежный способ! но спасибо. - person Jalal; 04.03.2011

вы можете использовать GetModemStatus, чтобы найти статус модема.. если модем подключен, эта функция возвращает определенное значение. я не уверен, что значение всегда одинаково... на моем компьютере эта функция возвращает 115.

person stinepike    schedule 06.03.2011