Ципихович Эндрю
Помогающий
Offline
|
|
« : 11-12-2011 10:29 » |
|
Здравствуйте, подскажите на каком ЯП я могу точно узнать, то что узнаю вручную, а именно: Пуск Панель управления Телефоны и модемы Модемы, количество модемов, их название, к какому порту COM они подцеплены и из них узнать количество доступных модемов После Вашего ответа пойду в ту ветку или скажите сразу как это узнать?, код? кожно и нужно в WEB'е, спасибо
|
|
|
Записан
|
|
|
|
zubr
Гость
|
|
« Ответ #1 : 11-12-2011 11:33 » |
|
Не понял про WEB? Тебе что, нужно, чтобы броузер на сервер отстучал доступные модемы?
|
|
|
Записан
|
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #2 : 11-12-2011 12:00 » |
|
JS, VBScript, что-то ещё, Dart ?? >на сервер отстучал доступные модемы можно и так или Alert, для начала что нибудь
|
|
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #3 : 11-12-2011 13:38 » |
|
Если бы моя система такое позволяла - я бы ее не использовал. Это грубое нарушение безопасности, если через скрипты на web страницах можно что-то узнать о системе
|
|
|
Записан
|
|
|
|
zubr
Гость
|
|
« Ответ #4 : 11-12-2011 13:45 » |
|
|
|
|
Записан
|
|
|
|
zubr
Гость
|
|
« Ответ #5 : 11-12-2011 13:51 » |
|
Без использования дыр в защите из песочницы броузера все равно не получится.
|
|
|
Записан
|
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #6 : 11-12-2011 13:59 » |
|
одним словом нужно в ВЭБе или ВБ(А) за вознаграждение, задача пустяковая и код есть, не знаю какую именно команду послать опрашивая модем Добавлено через 40 минут и 33 секунды:по сылке http://msdn.microsoft.com/en-us/library/windows/desktop/aa393262%28v=vs.85%29.aspx1 Следующий код 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 »
|
Записан
|
|
|
|
Ципихович Эндрю
Помогающий
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
|
|
« Ответ #9 : 11-12-2011 19:44 » |
|
с таким неаккуратным кодом можно и не успеть
1. Переменные нужно инициализировать 2. Использование GOTO в данном коде ЗЛО! 3... после удаления указанных проблем - тогда код станет более читаемым
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Ципихович Эндрю
Помогающий
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
|
|
« Ответ #12 : 12-12-2011 06:19 » |
|
Ципихович Эндрю, при чем тут "Option Explicit" и "инициализировать"? При первом проходе цикла: Количество_модемов = Количество_модемов + 1 К чему мы прибавляем 1?
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #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
|
|
« Ответ #14 : 12-12-2011 08:09 » |
|
Откройте гипертерминал, выберите модем. Подайте на него команду ATI и возможно вы поймет, что Вы делаете. А может существуют еще какие-нибудь СТАНДАРТНЫЕ AT команды модема?
|
|
« Последнее редактирование: 12-12-2011 08:11 от Sla »
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Ципихович Эндрю
Помогающий
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 от Ципихович Эндрю »
|
Записан
|
|
|
|
Ципихович Эндрю
Помогающий
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 И зачем мне нужна такая стабильность??? Ни одного верного ответа, что делать?
|
|
|
Записан
|
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #17 : 12-12-2011 15:30 » |
|
>Откройте гипертерминал, выберите модем. Подайте на него команду ATI и возможно вы поймет, что Вы делаете Ну проясняется, а что я там могу набрать кроме номера?? Это же бред, узнать доступен ли модем позвонить с него, да и как я позвоню??, я даже открыть порт не могу
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #18 : 12-12-2011 18:12 » |
|
да и как я позвоню
Даже отвечать не хочу. Потому что вы не изучили НИ ОДНОЙ АТ команды - то что ВЫ привели в примере - то фигня... которая к вопросу не относится.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #19 : 13-12-2011 01:52 » |
|
1 я во фрилансе или нет? 2 прога Звонилка стоит 25 долларов 3 покупать и работать не по мне, мне надо знать её нутро 4 сделана по моему мнению плоховато, например если у юзера нет ни одного модема на компьютере или нет ни одного доступного для звонка модема, зачем она открывается вообще?, ну понятно может для ознакомительных целей, но Вы извините, если нет модемов подцепленых к компу или доступных для звонка при открытии проги, уважаемый программист написавший звонилку выдайте сообщение "Мол нету...., открыть для ознакомительных целей?" Сразу юзера уведомить о его перспективах не позвонить >то что ВЫ привели в примере - то фигня... которая к вопросу не относится Согласен, просто я её не знаю, а топиков в сети на эту тему - на 5 форумах, кое где советуют, я тупо пробую Так сколько будет стоить узнать АТ команду?
|
|
|
Записан
|
|
|
|
zubr
Гость
|
|
« Ответ #20 : 13-12-2011 03:49 » |
|
топиков в сети на эту тему - на 5 форумах, кое где советуют, я тупо пробую Типичный пример быдлокодерства. А самому взять, да изучить книжку, к примеру, Агурова "Последовательные интерфейсы ПК" (там есть информация и по модемам и по AT-командам) слабо? За эти дни, что ты пытаешься получить инфу на форумах и тупо ее применять, можно было уже стать профи в программировании модемов.
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #21 : 13-12-2011 08:34 » |
|
Что Вы не знаете? Не знаете где находится гугль? Я так давно пользовался такой командой - ATI, что уже и забыл что она выдает. Но тем не менее, набрав в гугле ТРИ слова я сразу попал на нужный мне, правда не очень хороший, но мне было достаточно, справочник. А дальше я даже и не смотрел.
А что такое "Я не во фрилансе"? Я эту фразу слышу уже дважды...
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
DneprSMV
|
|
« Ответ #22 : 17-12-2011 18:18 » |
|
Ципихович Эндрю, обычно "тест" на наличие модема онлайн начинается с подачи команд <pause>+++<pause> - выйти из режима передачи данных, если модем в онлайн ATH0 <CR> - "положить трубку" - разорвать соединение AT<CR> - "attention" в ответ он должен сказать "OK" Это и есть проверка наличия модема на COMXX. По крайней мере, работающего в стандарте АТ-команд. Сложности этого теста - порт должен быть настроен на скорость, соответствующую скорости модема (для старых типов) - модем должен находится в "командном" режиме, а не в режиме "передача данных" - ответ модема должен быть настроен на один из режимов - символьный (OK) или цифровой (123...)
|
|
|
Записан
|
"Не слушайте никаких советов, в том числе и этот" (Сократ ?)
|
|
|
Sla
|
|
« Ответ #23 : 17-12-2011 18:26 » |
|
DneprSMV, не совсем... Порт открывается и посылается команда инициализации модема, если там есть модем... По сути, просто тупо в порт отдать команду AT. не взирая на... есть там модем или нет. ну и подождать ответа - если то что надо, то модем есть
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
DneprSMV
|
|
« Ответ #24 : 18-12-2011 15:23 » |
|
Sla, да. Но если ги-по-те-ти-че-ски (!) есть модем и он занят/завис то номер с AT не получится. Хотя в Win все это возлагается на саму ОС, надо все спрашивать у драйвера. Win32, TAPI ?
|
|
|
Записан
|
"Не слушайте никаких советов, в том числе и этот" (Сократ ?)
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #25 : 18-12-2011 16:26 » |
|
А почему тема в разделе "Ищем работника"?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Sla
|
|
« Ответ #26 : 18-12-2011 16:35 » |
|
А хрен его знает - некому перенести
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
|