|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
Имеется GSM модем Huawei e173 С помощью АТ-комманд можно с него звонить. Но только одна проблема: ничего не слышно ни мне ни тому кому звоню. Однако если для звонков использовать программу ( http://files.ksn.name/Mobile_Partner_11.030.01.07.03.exe) то всё нормально слышно. Специалисты сказали, что нужно ловить звук и передавать через СОМ порт. Номер этого порта известен. Непонятно только с помощью чего этот звук передавать. Может надо для этого модема ещё и драйвер какой-то дополнительный написать именно для звука? Или в каком направлении копать? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2012, 15:58 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
Возможно звук сначала нужно представить в виде какой-то двоичной последовательности и передать на СОМ порт так же, как и передаются АТ команды? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2012, 16:04 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
Ищи pdf документ от конкретной модели - АТ команды. Думаю, не будешь рад когда уйма времени убьешь почти впустую. Обычный call вызов тот которым ты пользуешься рассчитан на (я так понял) для соединения модем->модем. Могу ошибаться (давно было) При соединении двух телефонов таким способом можно общаться по HyperTerminal. Баловались ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2012, 05:15 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
Когда-то были телефоны Сименс, почти во всех моделях был модем. Хороший модем, с поддержкой факсов и данных. Но такой фичи чтоб "голос через модем" не было. Т.е. если номер через COM порт набираешь, то весь звук по любому через телефон только. С Huawei не знаком, но допускаю что там "голосовой модем". Попробуй www.ventafax.ru , если повезет и подберешь Voice Command Set (система голосовых команд модема, единого стандарта фактически нет), то сможешь опробовать, а в лог файле посмотреть что вента делает и какие AT-команды и т.д. посылает и чего принимает. И как правильно было замечено, нужен справочник по AT-командам модема для именно этой модели. Но AT-команд мало, надо еще понимать как голос (данные) пакуется-отправляется-принимается-шифруется-дешифруется, coder-encoder итд. Но, непонятно зачем это нужно, потому что писать подобные вещи ой как нелегко. Помнится, когда для упомянутого сименса писал прием-передачу СМС, было много энтузазизма тогда, кучу времени потратил, одно шифрование в юникод чего стоило (биты ручками переставлять). Да и то все быстреько загнулось на след. модели сименса (когда смсы стали храниться не только на симке 10шт, но и в телефоне). А Вы говорите голос...ой...эт имеет смысл если только с головой в это окунуться и спонсор богатый. Модем, это как бы для отправки fax/data, а для этого есть специализированные программы, и они должны уметь с ним работать. А "голос" если и нужен, то для реализации спецефических фич, например голосовое приветствие перед отправкой факса, рассылка голосовых сообщений, но никак не "говорить через модем" -эт по определению плохая идея. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2012, 15:48 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
donpaulsИмеется GSM модем Huawei e173 С помощью АТ-комманд можно с него звонить. Но только одна проблема: ничего не слышно ни мне ни тому кому звоню. Однако если для звонков использовать программу ( http://files.ksn.name/Mobile_Partner_11.030.01.07.03.exe) то всё нормально слышно. Специалисты сказали, что нужно ловить звук и передавать через СОМ порт. Номер этого порта известен. Непонятно только с помощью чего этот звук передавать. Может надо для этого модема ещё и драйвер какой-то дополнительный написать именно для звука? Или в каком направлении копать? Доброго время провождения! Я тоже пытаюсь написать программу для звонков! У тебя как получилось donpauls? Вот нашел интересную статью! ЧАСТЬ III. ПРИЕМ/ПЕРЕДАЧА ГОЛОСОВЫХ ДАННЫХ 1. Формат GSM: GSM - это кадровый (фреймовый) формат. Один GSM-фрейм содержит 160 PCM выборок с частотой 8КГц, что составляет 0.02 секунды звучания. Размер одного GSM-фрейма 33 байта. Для использования в модемах каждый GSM-кадр снабжается начальным и конечным словами (маркерами), а также в конец фрейма добавляется один нулевой незначащий байт. Итого один GSM-фрейм имеет размер в 38 байт. Выглядит это следующим образом: 0xB6 0xB6 [0 .. GSM FRAME .. 32] 0x00 0xA5 0xA5 или 0xFE 0xFE [0 .. GSM FRAME .. 32] 0x00 0xA5 0xA5 Кадры, начинающиеся с 0xB6B6 обозначают GSM-фрейм, который содержит голосовые данные, уровень громкости которых ниже порога тишины DSP. 0xB6B6 - это маркер того, что модем определяет тишину. Кадры, которые начинаются с 0xFEFE, содержат речевые данные с нормальным уровнем. Слово 0xA5A5 - означает конец фрейма. Эти начальные и конечные слова должны обязательно использоваться, для записи и воспроизведения через модем. Они должны быть удалены, если декодирование GSM-кадров необходимо делать программным путем. В голосовых модемах с протоколом x.2 есть возможность выбирать будут ли GSM-кадры снабжаться маркерами или нет. Это можно указать в регистре S41. Во время передачи голосовых данных, модем сам распознает вид кадров (с маркерами или без них). Во время приема голосовых данных модем передает кадры, тип которых установлен в регистре S41. 2. Прием голосовых данных: Начало приема голосовых данных следует после ввода команды #VRX в голосовом командном режиме. Чтобы остановить поток данных, необходимо послать в модем любой одиночный символ, например, 0x10. После чего необходимо дочитать из буфера модема, оставшиеся там голосовые данные для формирования полноценного GSM-фрейма. Поток голосовых данных заканчивается кодом <DLE><ETX>. Если при GSM сжатии голосовых данных случается так, что символ <DLE> является частью GSM-кадра, то модем добавляет за ним еще один символ <DLE>. Т.е. при приеме двух подряд символов <DLE> необходимо один из них выкинуть. Если при приеме голосовых данных модем обнаружит DTMF-тон, сигнал готовности (dialtone), тишину или факсовый вызов, то в общий поток данных вставляется соответствующий <DLE>-код (см. часть II). Для правильного формирования GSM-кадров, необходимо удалить из потока оба символа - символ <DLE> и следующий за ним символ, указывающий на тип обнаруженного сигнала. 3. Передача голосовых данных: После ввода команды #VTX и получения ответа CONNECT можно передавать в модем голосовые данные на устройство вывода, указанное командой #VLS в соответствующем формате (см. #VSM). Для передачи данных в формате GSM, необходимо сформировать 38-байтовые GSM-кадры (как было указано выше) и передавать их в модем. Если передаваемые данные находятся в PCM-формате (например, обычный WAV-файл), то необходимо с помощью специального кодера перекодировать их в формат GSM. Для того, чтобы окончить вопроизведение голосовых данных, необходимо послать в модем символьную пару <DLE><ETX>. После чего модем выдаст ответ (VCON) и возвратится в голосовой командный режим. Просто пробую через терминал отправлять команды не идут! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2012, 23:49 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
Делал когда-то автопрозвонку. Только на c#. Но язык там особого значения не имеет - главное последовательность АТ-команд. Если интересно, могу выложить. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2012, 10:33 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
timur999 здравствуй. Мне очень интересна твоя тема автопрозвонки. Скинь на С# прогу, посмотрю последовательность АТ команд, надеюсь она у тебя с пояснениями. сам я недалеко продвинулся. при заданном условии у меня делается вызов абонента, а дальше как загнать при снятии трубки WAV файл для меня потемки... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2012, 21:21 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
Техник55, выкладываю сюда, хоть и на c#. Если модератору не понравится, давай почту, отправлю туда. В архиве есть голосовой файл tada.raw - для тестирования. Это одна из основных проблем - правильный формат файла. Я его делал с помощью Sound Forge (версию точно не помню, кажется, 10). И еще одна проблема, правильно подобрать параметры VRN и VRA. Я их устанавливал в 70 и 50 соответственно. Короче, если что, пиши. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2012, 11:40 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
timur999, спасибо что откликнулись. Еще не открывал, позже гляну. Хотелось бы узнать про VRN и VRA, что за параметры? и голосовой файл обязательно должен быть RAW, нельзя WAV. Я уже на всякий случай проверил свой модем через програмку Ventafax, все работает, все прозванивается, у абонента играет мелодия. Это радует меня, теперь надо самому написать что-то подобное, надеюсь ваша прога поможет. Возможно буду писать, консультироваться... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2012, 13:16 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
VRN - интервал (в 1/10 секунды) до поступления первого гудка. VRA - интервал по истечении которого, если не поступил очередной (после первого) гудок, модем "решает", что на "том" конце сняли трубку. Wav файл использовать нельзя. Вообще, расширение файла в данном случае - не критерий. Просто я сохранил файл с таким расширением. Этот файл в фармате GSM. Если еще какие вопросы, обращайтесь. Skype = Teymur.Gasimov. P.S. Если есть Ventafax, зачем делать свою программу? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2012, 13:43 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
timur999, >Если еще какие вопросы, обращайтесь. Skype = Teymur.Gasimov особенно когда такие познания >VRN - интервал (в 1/10 секунды) до поступления первого гудка. >VRA - интервал по истечении которого, если не поступил очередной (после первого) гудок, модем "решает", что на "том" конце сняли трубку. ОК, замётано!! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2012, 13:46 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
Со скайпом пока не получится, может позже, на работе все заблокировано, ничего не поставишь. Я так понял что ты для GSM модема прогу писал? у мня обычный голосовой модем ZyXel. я думаю команды все равно будут похожи!!! Почему не оставляю VentaFax, а пишу свою, п.ч. уже много написано на VB6 для контроллера. Смысл в том что как авария будет на контроллере, то должно быть оповещение. Для отправки смс через GSM билайн я уже накарябал прогу, да там легко. Теперь задача была поставлена голос передать через ZyXel... вот так. Вообще тяжко писать было??? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2012, 14:07 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
Если не сложно скинь прогу установочную, чтобы твой исходник загрузить. А то только на этом старье ПК имеется VB6 и все... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2012, 14:19 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
Установочник делать лень. Вот ехе-шка. Работает с .NET2.0. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2012, 15:58 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
timur999, спасибо попробую ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2012, 16:09 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
Техник55Со скайпом пока не получится, может позже, на работе все заблокировано, ничего не поставишь. Я так понял что ты для GSM модема прогу писал? у мня обычный голосовой модем ZyXel. я думаю команды все равно будут похожи!!! Почему не оставляю VentaFax, а пишу свою, п.ч. уже много написано на VB6 для контроллера. Смысл в том что как авария будет на контроллере, то должно быть оповещение. Для отправки смс через GSM билайн я уже накарябал прогу, да там легко. Теперь задача была поставлена голос передать через ZyXel... вот так. Вообще тяжко писать было??? Программу я писал не для GSM, а для обычного dial-up модема (точно уже не помню какого. Какой-то там Robotics). У модема должна быть поддержка голосового режима (Диагностика, Опросить модем) - напротив AT+FCLASS=? в списке должна быть цифра 8. Программу написать не тяжело. Сложнее подобрать формат файла и временные интервалы для правильной работы (определение снятия трубки, сигнал "занято" и т.п.) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2012, 16:55 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
timur999, у меня точно голосовой модем. Когда я в VentaFax отправляю мелодию у меня в окошечке высвечивается AT+FCLASS=8 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2012, 13:15 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
timur999, посмотрел ваш исходник и понял, что вы профи, а я так.... У вас там целый программный продукт, что не могу сказать про себя... Вы будете смеяться вот часть моего кода для отправки смс: Sub send_message() Dim comm As New MSComm ' в референсах подключить mscomm32.ocx If comm.PortOpen = False Then comm.CommPort = 16 ' номер порта к которому подключен GSM-модем comm.Settings = "19200,N,8,1" comm.Handshaking = comNone comm.InputLen = 0 comm.InBufferSize = 40 comm.OutBufferSize = 40 comm.RThreshold = 0 comm.PortOpen = True End If comm.Output = "AT+CMGF=1" & vbCrLf ' Текстовый режим comm.Output = "AT+CMGS=" & Chr(34) & "+79234920314" & Chr(34) & vbCrLf ' номер телефона (кому) comm.Output = "повреждение датчика №1" & Chr(26) & vbCrLf ' текст сообщения comm.PortOpen = False counter = counter + 1 End Sub ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2012, 20:31 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
timur999, глаза боятся, а руки делают, начнем: Sub call_message() Dim comm As New MSComm ' в референсах подключить mscomm32.ocx If comm.PortOpen = False Then comm.CommPort = 1 ' номер порта к которому подключен ZyXel-модем comm.Settings = "9600,N,8,1" ' задаем параметры comm.PortOpen = True 'открываем порт End If comm.output="AT+FCLASS=8"& vbCrLf ' я так понял переводим в голосовой режим модем ' Далее я так понял задаем временные параметры, про кот. вы мне говорили... comm.output="AT+VRN=70"& vbCrLf ' время ожидания первого гудка comm.output="AT+VRA=50"& vbCrLf 'интервал после кот. он решает, что трубку сняли ' Далее делаем вызов comm.output="ATD2208"& vbCrLf ' вызов абонента с номером 2208 Дальше нужны наверно какие-то условия: Если VRA=50, тогда посылаем мелодию, иначе comm.output="ATH"& vbCrLf 'завершаем сеанс связи и ....закрываем порт. это конечно не конец проги, моя сейчас задача что абонент снял трубку и ему проиграла мелодия, остальное позже думать будем!!! Еще я совсем не понял команды АТ+VSM, AT+VTX, может еще какие упустил???? и еще как отправлять мелодию, какие АТ команды, вроде все пересмотрел у вас а этот момент не нашел. может вы как эту мелодию преобразуете (кодируете). В общем просветите... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2012, 21:48 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2012, 00:06 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
Техник55, Первое что бросается в глаза - частота порта. 9600 бод явно слишком мало. Я использую 115200. Это не "потолок", но более высокую частоту АТС может не потянуть. Запустите мою программу и нажмите "Настройки". Насколько я помню, у класса mscomm настройки почти такие же. У меня цикл обмена начинается с такой процедуры: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Т.е. посылается команда ATZ для инициализации (так сказать, на всякий случай). Далее разбираем ответ от порта: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50.
Т.е. в зависимости от того какую команду отправили (ATZ, AT+FCLASS=8, AT+VSM=128,8000 и т.д.), соответствующая процедура обрабатывает ответ порта (#region AT команды). Вся последовательность команд у меня построена так: 1. ATZ 2. AT+FCLASS=8 3. AT+VSM=128,8000 4. AT+VRA=ххх 5. AT+VRN=ххх 6. ATDTnnnnnnnnn далее в зависимости от ответа модема (OK или VCON или CONNECT - private void ATDT) отправляем команду AT+VTX или вешаем трубку. После отправки AT+VTX пересылаем голосовые данные и одновременно разбираем ответ порта. Варианты ответа: 1. DLE+b - абонент повесил трубку 2. OK или VCON - наши данные дошли до цели Завершаем передачу данных двумя байтами DLE ETX. Техник55Если VRA=50, тогда посылаем мелодию, иначе comm.output="ATH"& vbCrLf 'завершаем сеанс связи и ....закрываем порт. Мелодию посылаем после AT+VTX и получения CONNECT или OK (private void AT_VTX). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2012, 08:50 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
[/quot] Мелодию посылаем после AT+VTX и получения CONNECT или OK (private void AT_VTX).[/quot] Ну после какой команды запускать мелодию я понял. А как ее запускать и какую именно и как ее кодировать и какими командами??? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2012, 09:09 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
Никакого кодирования. Просто байты и все :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2012, 09:49 |
|
Посылка и прослушка звука из com порта
|
|||
---|---|---|---|
#18+
timur999, вопросик небольшой. Какой командой проверить занят мой модем или свободен. Для чтобы дальше с ним работать??? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2012, 20:13 |
|
|
start [/forum/topic.php?fid=60&msg=37833238&tid=2157690]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 302ms |
total: | 438ms |
0 / 0 |