Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Модемы  (Прочитано 23462 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ципихович Эндрю
Помогающий

ru
Offline Offline

« : 11-12-2011 10:29 » 

Здравствуйте, подскажите на каком ЯП я могу точно узнать, то что узнаю вручную, а именно: Пуск Панель управления Телефоны и модемы Модемы, количество модемов, их название, к какому порту COM они подцеплены и из них узнать количество доступных модемов
После Вашего ответа пойду в ту ветку или скажите сразу как это узнать?, код? кожно и нужно в WEB'е, спасибо
Записан
zubr
Гость
« Ответ #1 : 11-12-2011 11:33 » 

Не понял про WEB? Тебе что, нужно, чтобы броузер на сервер отстучал доступные модемы?
Записан
Ципихович Эндрю
Помогающий

ru
Offline Offline

« Ответ #2 : 11-12-2011 12:00 » 

JS, VBScript, что-то ещё, Dart Улыбаюсь??
>на сервер отстучал доступные модемы
можно и так или Alert, для начала что нибудь
Записан
Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 11-12-2011 13:38 » 

Если бы моя система такое позволяла - я бы ее не использовал.
Это грубое нарушение безопасности, если через скрипты на web страницах можно что-то узнать о системе
Записан
zubr
Гость
« Ответ #4 : 11-12-2011 13:45 » 

http://msdn.microsoft.com/en-us/library/windows/desktop/aa393262%28v=vs.85%29.aspx
Записан
zubr
Гость
« Ответ #5 : 11-12-2011 13:51 » 

Без использования дыр в защите из песочницы броузера все равно не получится.
Записан
Ципихович Эндрю
Помогающий

ru
Offline Offline

« Ответ #6 : 11-12-2011 13:59 » 

одним словом нужно в ВЭБе или ВБ(А) за вознаграждение, задача пустяковая и код есть, не знаю какую именно команду послать опрашивая модем

Добавлено через 40 минут и 33 секунды:
по сылке
http://msdn.microsoft.com/en-us/library/windows/desktop/aa393262%28v=vs.85%29.aspx
1
Следующий код VBScript пример иллюстрирует ряд функций WMI сценариев. Этот скрипт перечисляет все диски на локальной компьютерной системе.
2
Следующий пример представляет собой компактный строки кода, который выполняет несколько задач.
3
Следующий пример кода показывает, что обработка ошибок в сценарии WMI выходит за рамки возможностей WSH Err объекта. Создавая SWbemLastError объект, вы можете получить на WMI конкретной информации о возникшей ошибке. Обратите внимание, что SWbemLastError объекта создается стандартный VBScript CreateObject метод с ProgID значение "WbemScripting.SWbemLastError". Это еще один способ получения объекта WMI.
чего-то нужное не нашёл
« Последнее редактирование: 11-12-2011 14:40 от Ципихович Эндрю » Записан
zubr
Гость
« Ответ #7 : 11-12-2011 14:47 » 

Ципихович Эндрю, я тебе ссылку указал, как направление, куда смотреть, а именно, в строну WMI. Через WMI можно определить установленное железо на компе, в том числе и модемы. Для разных видов оборудования есть разные классы.
Это ответ на твой вопрос:
Цитата
подскажите на каком ЯП я могу точно узнать
Правда, WMI - это не ЯП, а технология.
« Последнее редактирование: 11-12-2011 14:49 от zubr » Записан
Ципихович Эндрю
Помогающий

ru
Offline Offline

« Ответ #8 : 11-12-2011 15:13 » 

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

Добавлено через 4 часа, 11 минут и 34 секунды:
если реестр
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Modem
там две папки
Enum
Parametrs
В какой папке смотреть?? Вручную если смотреть - ничего там интересного не вижу, может очки надеть Улыбаюсь

Добавлено через 4 часа, 1 минуту и 34 секунды:
Эксперимент: в Ворде кнопка на неё вешаю код:

Код:
Sub PhoneПозвонить_с_телефона()

    On Error Resume Next

    Dim strComputer As String
    strComputer = "."

    Dim objWMIService As Object
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

    Dim colItems As Object
    Set colItems = objWMIService.ExecQuery("Select * from Win32_POTSModem")

    Dim MSComm1 As MSComm
    Set MSComm1 = New MSComm

    Dim objItem As Object

    Dim Количество_модемов As Byte
    Dim Количество_доступных_модемов As Byte

    Dim ИмяCOMпорта As String
    Dim MSComm1Input As String
    Dim Результат As String
    Dim Доступные_модемы As String

    For Each objItem In colItems
        Количество_модемов = Количество_модемов + 1
        ИмяCOMпорта = objItem.AttachedTo
        'отнимаем первые три буквы, то есть COM
        MSComm1.CommPort = Right$(ИмяCOMпорта, (Len(ИмяCOMпорта) - 3))
        MSComm1.PortOpen = True
        'или Err.Clear, обнуляем ошибку
        If Err.Number = 8012 Then
            Err.Number = 0
            MSComm1.PortOpen = False
            MSComm1Input = ""
            GoTo Skip
        End If

        'MsgBox$ Err.Number & "-" & Err.Description
        MSComm1.Output = "ATI" & vbCr
        MSComm1Input = MSComm1.Input
        MSComm1.PortOpen = False

Skip:

        If Len(MSComm1Input) = 0 Then
            Результат = Результат & Количество_модемов & " " & objItem.Model & " - " & objItem.AttachedTo & " - Не доступен для звонка" & Chr$(13)

        Else

            Результат = Результат & Количество_модемов & " " & objItem.Model & " - " & objItem.AttachedTo & " - Доступен для звонка" & Chr$(13)
            Количество_доступных_модемов = Количество_доступных_модемов + 1
            Доступные_модемы = Доступные_модемы & objItem.Model & " - " & objItem.AttachedTo & Chr$(13)
        End If

    Next

    'установка объекта в значение Nothing требуется для освобождения памяти, которая была выделена для создания этого объекта
    Set objWMIService = Nothing
    Set colItems = Nothing
    Set MSComm1 = Nothing

    'отключает действие строки 1) On Error GoTo ... 2) либо действие строки On Error Resume Next
    On Error GoTo 0

    MsgBox$ "Количество установленных модемов в компьютере: " & Количество_модемов & Chr$(13) & Результат & "Количество модемов, доступных для звонка: " & Количество_доступных_модемов

    Exit Sub


При этом перед нажатием на кнопку проверяю вручную Пуск Панель управления Телефон и модемы Модемы, смотрю два порта присутствует, что и есть на самом деле. Нажимаю раз десять подряд, получаю ответы хаотичные, Количество доступных модемов 0 или 1, ни разу нет ответа 2, ЕРЕЕЕЕЕЕЕЕСЬ!!
Как лечить, подскажите, пожалуйста, заранее спасибо.
Хоть бы до Нового года успеть Улыбаюсь
« Последнее редактирование: 11-12-2011 19:24 от Ципихович Эндрю » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 11-12-2011 19:44 » 

с таким неаккуратным кодом можно и не успеть

1. Переменные нужно инициализировать
2. Использование GOTO в данном коде ЗЛО!
3... после удаления указанных проблем - тогда код станет более читаемым
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Ципихович Эндрю
Помогающий

ru
Offline Offline

« Ответ #10 : 12-12-2011 00:53 » 

1 Спасибо за ответ
2 По поводу Вашего первого, ставим Option Explicit и код идёт, что ещё инициализировать? Хотя это называется объявить явно, тогда не знаю, что такое инициализировать???
3 По поводу Вашего второго, не считаю это большим прыжком и проблемой для не читаемости
Код:
If Err.Number = 8012 Then
            Err.Number = 0
            MSComm1.PortOpen = False
            MSComm1Input = ""
            GoTo Skip
        End If

        'MsgBox$ Err.Number & "-" & Err.Description
        MSComm1.Output = "ATI" & vbCr
        MSComm1Input = MSComm1.Input
        MSComm1.PortOpen = False

Skip:


Добавлено через 4 часа, 35 минут и 57 секунд:
мне то нужно знать что именно послать в порт
MSComm1.Output = "ATI" & vbCr
вместо "ATI" чтобы это 100% сработало

Добавлено через 4 часа, 34 минуты и 13 секунд:
ну ладно, Вы просили я сделал по поводу зла GoTo, отрезок из поста 13 замените на этот
Код:
If Err.Number = 8012 Then
            Err.Number = 0
            MSComm1.PortOpen = False
            MSComm1Input = ""
            GoTo Skip
       
Else
        'MsgBox$ Err.Number & "-" & Err.Description
        MSComm1.Output = "ATI" & vbCr
        MSComm1Input = MSComm1.Input
        MSComm1.PortOpen = False

End If
Это чтобы не сказали, не хочешь слушать что говорят ...
Что далее, уважаемые??
« Последнее редактирование: 12-12-2011 05:29 от Ципихович Эндрю » Записан
zubr
Гость
« Ответ #11 : 12-12-2011 06:17 » 

Уважаемый, Ципихович Эндрю, чтобы отвечать на твои вопросы, надо все бросить и влезать с головой в твою задачу. Люди здесь все в массе взрослые и занятые. Направление куда рыть тебе дали, ну а остальное ты уже сам..
Записан
Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 12-12-2011 06:19 » 

Ципихович Эндрю, при чем тут "Option Explicit" и "инициализировать"?
При первом проходе цикла:
Код: (Visual Basic)
Количество_модемов = Количество_модемов + 1
К чему мы прибавляем 1?
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 12-12-2011 08:05 » 

1.
Option Explicit
http://www.firststeps.ru/vba/vbahelp/r.php?43
Читаем до тошноты, пока мозги не прояснятся.

2. Вы находитесь на форуме Клуба программистов и пришли сюда за советом и помощью.
Не доверяйте компилятору (интерпретатору) - доверяйте себе. Компиляторы (интерпретаторы) тоже пишут люди.

3. Ветка с конструкцией goto портит стройность вашей мысли. Рекомендую рассмотреть возможность убрать эту ветвь - ваши мысли станут светлее.
Этот код - бред
Код:
If Err.Number = 8012 Then
            Err.Number = 0
            MSComm1.PortOpen = False
            MSComm1Input = ""
            GoTo Skip
       
Else
        'MsgBox$ Err.Number & "-" & Err.Description
        MSComm1.Output = "ATI" & vbCr
        MSComm1Input = MSComm1.Input
        MSComm1.PortOpen = False

End If
Зачем здесь goto?
Почему так придирчиво? Вы не совсем понимаете КАК ЭТО РАБОТАЕТ.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #14 : 12-12-2011 08:09 » 

Откройте гипертерминал, выберите модем. Подайте на него команду ATI и возможно вы поймет, что Вы делаете.
А может существуют еще какие-нибудь СТАНДАРТНЫЕ AT команды модема?

« Последнее редактирование: 12-12-2011 08:11 от Sla » Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Ципихович Эндрю
Помогающий

ru
Offline Offline

« Ответ #15 : 12-12-2011 14:06 » 

>К чему мы прибавляем 1?
Приехали, в моём коде когда пошагово выполняете строки
1 - For Each objItem In colItems
        2 - Количество_модемов = Количество_модемов + 1
        3 - ИмяCOMпорта = objItem.AttachedTo
первую наведите курсор у сторой строки к Количество_модемов и увидете ответ 0
А когда пройдёте строку 2, будете на третьей, увидите подведя курсор к Количество_модемов и увидите ответ 1
Что не так???


Добавлено через 2 минуты и 22 секунды:
>Зачем здесь goto?
>Почему так придирчиво? Вы не совсем понимаете КАК ЭТО РАБОТАЕТ.
Согласен, ответ был от Сегодня в 08:05, спешил переделывал для Вас, его нужно заремарчить


Добавлено через 4 минуты и 26 секунд:
>Откройте гипертерминал, выберите модем. Подайте на него команду ATI и возможно вы поймет, что Вы делаете
Согласен, но я крутил вертел, не догоняю я эту прогу, только открыл предлагают всё время создать мне новое подключение, что мне старого мало и много не ясностей
« Последнее редактирование: 12-12-2011 14:13 от Ципихович Эндрю » Записан
Ципихович Эндрю
Помогающий

ru
Offline Offline

« Ответ #16 : 12-12-2011 14:29 » 

>Люди здесь все в массе взрослые и занятые. Направление куда рыть тебе дали, ну а остальное ты уже сам
Так я вроде во фрилансе...
Правильно дело пустяковое(можете и бесплатно сказать команду), но после этого вопроса ещё один возникает, не стесняйтесь, предлагайте, я перепробовал:
Итак, опробовал шесть вариантов, правильный ответ, должен быть 2
1 - "ATE1" – стабильно всегда ответ 1
2 - "ATE0" – стабильно всегда ответ 1
3 - "ATE0?" – стабильно всегда ответ 1
4 - "AT&V7?" – стабильно всегда ответ 0
5 - "AT&V7" – стабильно всегда ответ 0
6 - "AT&I7" – стабильно всегда ответ 1
И зачем мне нужна такая стабильность??? Ни одного верного ответа, что делать?Не понял
Записан
Ципихович Эндрю
Помогающий

ru
Offline Offline

« Ответ #17 : 12-12-2011 15:30 » 

>Откройте гипертерминал, выберите модем. Подайте на него команду ATI и возможно вы поймет, что Вы делаете
Ну проясняется, а что я там могу набрать кроме номера??
Это же бред, узнать доступен ли модем позвонить с него, да и как я позвоню??, я даже открыть порт не могу
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #18 : 12-12-2011 18:12 » 

Цитата
да и как я позвоню
Даже отвечать не хочу.
Потому что вы не изучили НИ ОДНОЙ АТ команды - то что ВЫ привели в примере  - то фигня... которая к вопросу не относится.

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Ципихович Эндрю
Помогающий

ru
Offline Offline

« Ответ #19 : 13-12-2011 01:52 » 

1 я во фрилансе или нет?
2 прога Звонилка стоит 25 долларов
3 покупать и работать не по мне, мне надо знать её  нутро
4 сделана по моему мнению плоховато, например если у юзера нет ни одного модема на компьютере или нет ни одного доступного для звонка модема, зачем она открывается вообще?, ну понятно может для ознакомительных целей, но Вы извините, если нет модемов подцепленых к компу или доступных для звонка при открытии проги, уважаемый программист написавший звонилку выдайте сообщение
"Мол нету...., открыть для ознакомительных целей?"
Сразу юзера уведомить о его перспективах не позвонить
>то что ВЫ привели в примере  - то фигня... которая к вопросу не относится
Согласен, просто я её не знаю, а топиков в сети на эту тему - на 5 форумах, кое где советуют, я тупо пробую
Так сколько будет стоить узнать АТ команду?
Записан
zubr
Гость
« Ответ #20 : 13-12-2011 03:49 » 

Цитата
топиков в сети на эту тему - на 5 форумах, кое где советуют, я тупо пробую
Типичный пример быдлокодерства.
А самому взять, да изучить книжку, к примеру, Агурова "Последовательные интерфейсы ПК" (там есть информация и по модемам и по AT-командам) слабо? За эти дни, что ты пытаешься получить инфу на форумах и тупо ее применять, можно было уже стать профи в программировании модемов.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #21 : 13-12-2011 08:34 » 

Что Вы не знаете?
Не знаете где находится гугль?
Я так давно пользовался такой командой - ATI, что уже и забыл что она выдает. Но тем не менее, набрав в гугле   ТРИ слова я сразу попал на нужный мне, правда не очень хороший, но мне было достаточно, справочник. А дальше я даже и не смотрел.

А что такое "Я не во фрилансе"? Я эту фразу слышу уже дважды...
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
DneprSMV
Помогающий

kz
Offline Offline
Пол: Мужской

« Ответ #22 : 17-12-2011 18:18 » 

Ципихович Эндрю,
обычно "тест" на наличие модема онлайн начинается с подачи команд
<pause>+++<pause>  - выйти из режима передачи данных, если модем в онлайн
ATH0 <CR> - "положить трубку" - разорвать соединение
AT<CR>  - "attention"
в ответ он должен сказать
"OK"
Это и есть проверка наличия модема на COMXX. По крайней мере, работающего в стандарте АТ-команд.
Сложности этого теста
- порт должен быть настроен на скорость, соответствующую скорости модема (для старых типов)
- модем должен находится в "командном" режиме, а не в режиме "передача данных"
- ответ модема должен быть настроен на один из режимов - символьный (OK) или цифровой (123...)
Записан

"Не слушайте никаких советов, в том числе и этот" (Сократ ?)
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #23 : 17-12-2011 18:26 » 

DneprSMV, не совсем...
Порт открывается и посылается команда инициализации модема, если там есть модем... По сути, просто тупо в порт отдать команду AT. не взирая на... есть там модем или нет. ну и подождать ответа - если то что надо, то модем есть
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
DneprSMV
Помогающий

kz
Offline Offline
Пол: Мужской

« Ответ #24 : 18-12-2011 15:23 » 

Sla, да. Но если ги-по-те-ти-че-ски (!) есть модем и он занят/завис то номер с AT не получится. Хотя в Win все это возлагается на саму ОС, надо все спрашивать у драйвера.
Win32, TAPI ?


Записан

"Не слушайте никаких советов, в том числе и этот" (Сократ ?)
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #25 : 18-12-2011 16:26 » 

А почему тема в разделе "Ищем работника"?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #26 : 18-12-2011 16:35 » new

А хрен его знает - некому перенести Улыбаюсь
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines