Обнаружение модема и его порта!

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

mrBoris
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 21.11.2008 (Пт) 16:44

Обнаружение модема и его порта!

Сообщение mrBoris » 21.11.2008 (Пт) 16:47

Здравствуйте!

Нужно обнаружить на каком порту "висит" модем.
Также хотелось-бы получить его имя, которое в диспетчере устройств отображается.

Перебрать доступные порты в системе модно так:
Код: Выделить всё
Sub GetSerialPortNames()
        ' Отобразить все  COM порты
        For Each sp As String In My.Computer.Ports.SerialPortNames
            ListBox1.Items.Add(sp)
        Next

    End Sub





Далее следующим кодом можно открыть порт и отправить туда команду at, модем должен ответить ОК(если он конечно там есть)
Но проблема в том, что если модем на COM2, а перебором всех портов начинаю с 1-го программа вылетает с ошибкой Access to the port 'COM1' is denied..

Код: Выделить всё
   Using com1 As IO.Ports.SerialPort = My.Computer.Ports.OpenSerialPort(ListBox1.SelectedItem, 9600)

             com1.DtrEnable = True

             com1.Write("at" & vbCrLf)

        End Using



Поэтому было-бы здорово, если можно было-бы как-то по другому проверить наличие модема.
И программа могла сама выбрать модем, без участия пользователя.

Или как минимум, увидеть имя модема и соответствующий ему ком порт, чтобы выбирать не вслепую из доступных портов.



Если кто знает подскажите как это можно сделать!!!




VB 2008
Модем - Zyxel omni 56k PCI

Спасибо всем за коменты!!!
Последний раз редактировалось mrBoris 30.11.2008 (Вс) 18:25, всего редактировалось 3 раз(а).

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Звонилка для модема

Сообщение alibek » 21.11.2008 (Пт) 17:11

mrBoris, tag_warning (1)
Перенес.
Lasciate ogni speranza, voi ch'entrate.

mrBoris
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 21.11.2008 (Пт) 16:44

Re: Обнаружение модема и его порта!

Сообщение mrBoris » 08.12.2008 (Пн) 23:44

ну судя по всему должно быть так:

Код: Выделить всё

For Each sp As String In My.Computer.Ports.SerialPortNames

            com1 = My.Computer.Ports.OpenSerialPort(sp, 9600)

'Если ошибка, не удалось открыть порт нужно продолжить перебирать
'Как сделать так, чтобы программа  не вылетала с ошибкой, а делала то что я написал выше



            Timer1.Enabled = True
            com1.DtrEnable = True


            com1.Write("at+gmm" & vbCrLf)
 

            ListBox1.Items.Add(sp & ":   " & com1.ReadLine)

        Next




Подскажите что-то?

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Обнаружение модема и его порта!

Сообщение Williams » 09.12.2008 (Вт) 10:33

Юзай WMI, получить имена установленных модемов будет возможно без лишних заморочек.

Даю НАВОДКУ Win32_POTSModem :wink:
И вы думаете, что вас оставят в живых после прочтения этого поста?

mrBoris
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 21.11.2008 (Пт) 16:44

Re: Обнаружение модема и его порта!

Сообщение mrBoris » 18.12.2008 (Чт) 17:38

Добрый день!

Спасибо за наводку.

У меня правда пока не получается ей воспользоваться :cry:
Если не не сложно дайте кусок кода, где имя модема передается в переменную или еще куда.

Или хотя-бы линк где об этом можно почитать(на русском).

Заранее спасибо!!!


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: Mail.ru [бот] и гости: 60

    TopList