AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

T38modem(SIP) сборка под OS WINDOWS

Asterisk IP PBX 5 сообщений 15.09.2008 13:54 - 06.02.2015 10:38
#1 15.09.2008 13:54

T38modem(SIP) сборка под OS WINDOWS

P.S. Копия. Оригинал http://www.voipinfo.ru/forum/viewtopic.php?t=11906 ;)
----------------------------------------------------------------------------------------------------------
anest писал(а):а что именно вы компилите под винду? астериск? :o
После многочисленных экспериментов, методом проб и ошибок,
Удалось собрать T38modem(SIP)+OPAL+PWLIB под OS Microsoft Windows,
а также сформулировать четкие положения что надо и что не надо делать. Данная инструкция по сборке работает на:
Microsoft Windows XP SP3
Microsoft Windows Server 2003 SP2
Для работы модема необходимо:
1. t38modem.exe 272кб
2. opal.dll 5.79мб
3. PTLib.dll 2.13мб
4. libexpat.dll 148кб

Программа без проблем переносится на другой PC указанных ОС. В этом случае необходима установка Microsoft.NET Framework 2.0 Service Pack 1 (дистрибутив 23,6мб)

T38modem в Windows работает точно также как и в Линукс.
Описание сборки под Линукс здесь:
http://www.voipinfo.ru/forum/viewtopic.php?t=11767

1.Установка Visual C++,SDK,NET Framework
Для успешной компиляции старая среда VC++6 не годится. Более того желательно, чтобы она вообще не была установлена на PC, иначе с ней придется бороться в процессе компиляции модема.SDK:новая,что for Windows Server 2008 не годится,там отсутствует ряд файлов и она слишком новая,старая XP SP2 SDK также нежелательна, в принципе с ней компилируется, но будет очень много предупреждений,оптимально Microsoft ® Windows Server® 2003 R2 Platform SDK,для работы модема также необходим NET Framework 2.0 SP1 (SP1-существенно).
1)Устанавливаем Microsoft Visual C++ 2005 Express Edition
http://msdn.microsoft.com/ru-ru/visualc/default.aspx
http://msdn.microsoft.com/ru-ru/vstudio ... n-us).aspx
2) http://www.microsoft.com/msdownload/pla ... sdkupdate/
Следуя этой инструкции устанавливаем Platform SDK.
http://msdn.microsoft.com/ru-ru/vstudio ... n-us).aspx
Вам нужна именно эта SDK:
Microsoft ® Windows Server® 2003 R2 Platform SDK Web Install
или
Windows® Server 2003 R2 Platform SDK Full Download
(Ссылки доступны на лицензионной ОС Windows)
После установки существенно:

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

Add the paths to the appropriate subsection: Executable files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin Include files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include Library files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib
3)Устанавливаем Microsoft.NET Framework 2.0 Service Pack 1
Он устанавливается либо через Windows Update, либо непосредственно с сайта Microsoft (google легко найдет нужную ссылку).
2.Устанавливаем необходимые вспомогательные инструменты и пакеты.
1) flex и bison -необходим для компиляции ptlib.
Скачиваем архив http://www.opalvoip.org/bin/flexbison.zip , распаковываем и кладем папку Tools в C:\Tools .
2) expat -если вы не установите этот пакет, то при компиляции Opal выскочит "ошибка PXML".
По ссылке http://sourceforge.net/project/showfile ... e_id=11277 скачиваем файл expat_win32bin_1_95_8.exe , устанавливаем expat в папку C:\ Expat-1.95.8
Не следует скачивать версию expat2.0.1, т.к. она плохо схватывается конфигуратором ptlib.
3) cvsnt -эта программа необходима для поддержки команды cvs в Windows
Скачиваем WinCvs2_0_2-4.zip:
http://www.wincvs.org/download.html#WINCVS
http://prdownloads.sourceforge.net/cvsg ... p?download
Из полученного архива берем один файл: cvsnt_setup.exe и устанавливаем.Второй файл-это графическая оболочка, для работы "cvs" cvsnt достаточно.
3.Скачиваем дистрибутивы pwlib,opal,t38modem.

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

D:\>cd c:\ C:\>cvs -z9 -d :pserver:[email protected]:/cvsroot/openh323 co ptlib_win32 C:\>cvs -z9 -d :pserver:[email protected]:/cvsroot/openh323 co -D "5/21/2007 23:59:59" opal C:\>cvs -z9 -d :pserver:[email protected]:/cvsroot/openh323 co -D "6/25/2007 23:59:59" t38modem
Дата opal существенна -с более поздним opal модем не компилируется. Дата t38modem для Win также существенна, дело в том, что поддержка opal была добавлена 28.05.07
* Revision 1.15 2007/05/28 13:44:53 vfrolov
* Added OPAL support
Однако 17.07.2007-20.07.2007 были сделаны нек. изменения:
* Revision 1.16 2007/07/17 10:05:26 vfrolov
* Added Unix98 PTY support
* Added OPAL example
И с этими изменениями модем под Windows уже не компилируется, поэтому 28.05.07Projects and Solutions->VC++ Directories
Сверху в обязательном порядке должно присутствовать(нужно дописать) стедующее:

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

Executable files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin C:\tools C:\pwlib\lib C:\opal\lib Include files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include C:\pwlib\include C:\opal\include Library files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib C:\pwlib\lib C:\opal\lib
Если у вас неважно где присутствуют пути типа "C:\Program Files\Microsoft Visual Studio\VC98...",то эти пути надо убрать, эти пути приведут лишь к ошибкам.
5.Проводим предварительный тест configure.exe, дабы застраховать себя от дальнейших ошибок.
Из командной строки:

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

C:\>cd pwlib C:\pwlib>configure.exe > test.txt
В файле test.txt мы должны увидеть следующее.

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

PWLib Configure 1.12 - opened configure.ac Located DNS Resolver at c:\program files\microsoft platform sdk for windows server 2003 r2\ Located IPv6 Support at c:\program files\microsoft platform sdk for windows server 2003 r2\include\ Located QoS Support at c:\program files\microsoft platform sdk for windows server 2003 r2\include\ Located ODBC support at c:\program files\microsoft platform sdk for windows server 2003 r2\include\ Searching C:\ Located Windows Expat XML at c:\expat-1.95.8\ Searching D:\ ... Windows Expat XML enabled
Существенно, чтобы первые строчки ссылались на "sdk for windows server 2003 r2" и "Expat XML" был бы обнаружен, если первые строчки ссылаются на другие пути, напр. в VC98, или обнаружено что-то еще в каких-то иных местах, ваша задача всеми известными методами (архивирование файлов, перенос на другой PC,убиение файлов) обеспечить недоступность "лишнего" и доступность "нужного" на момент компиляции, т.е. картинка в test.txt должна быть похожа на мою, иначе успех не гарантирован и двигаться дальше нельзя.
6.Компиляция в Microsoft Visual C++ 2005 Express Edition
1)PTLib Static

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

File->Open->Project/Solution->C:\pwlib\pwlib_2005.sln Solution Configurations: Release Win32 PTLib Static->Build... File->Close Solution
2)MergeSym

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

File->Open->Project/Solution->C:\pwlib\Tools\MergeSym\MergeSym_2005.vcproj Solution Configurations: Release Win32 Debug->Start Debugging... File->Close Solution
Результатом будет файл C:\pwlib\Lib\MergeSym.exe Он необходим для компиляции dll в п.3),но скомпилировать его можно лишь после выполнения п.1)
3)PTLib DLL (ptlib.dll)

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

File->Open->Project/Solution->C:\pwlib\pwlib_2005.sln Solution Configurations: Release Win32 PTLib DLL->Build... File->Close Solution
4)OPAL Static и OPAL_dll (opal.dll)
Важно: необходимо использовать именно проект opal_samples_2005.sln (для проверки:там внутри есть OpenPhone).Если вы случайно сделаете все в проекте opal_2005.sln,то у вас внешне все включая модем скомпилируется "правильно",но opal.dll получится дефектной и больше по размеру, и модем при запуске будет выдавать "Catastrofic failure".

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

File->Open->Project/Solution->C:\opal\opal_samples_2005.sln Solution Configurations: Release Win32 OPAL Static->Build... OPAL_dll->Build... File->Close Solution
5)T38modem (t38modem.exe)
Важно:необходимо использовать проект из папки t38modem\opal

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

File->Open->Project/Solution->C:\t38modem\opal\t38modem_2005.vcproj Solution Configurations: Release Win32 Debug->Start Debugging... File->Close Solution
Результатом будет файл C:\t38modem\opal\Release\t38modem.exe
7. Сборка приложения:
Если все прошло успешно, то имеем 4 файла:

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

C:\t38modem\opal\Release\t38modem.exe C:\opal\lib\opal.dll C:\pwlib\Lib\PTLib.dll C:\Expat-1.95.8\Libs\libexpat.dll
Эти 4 файла собственно и представляют собой законченное win32 приложение.
Создаем папку напр. C:\MyModem и копируем эти 4 файла туда.
8.Проверяем модем:
Запускаем файл t38modem.exe без параметров.
Если вы все сделали правильно, то увидите примерно следующее:

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

T38Modem Version 1.0.0 by OpenH323 Project on Windows XP (v5.1.2600-i586 (Model=15 Stepping=6)) 2008/09/15 13:55:07.484 T38Modem Version 1.0.0 by OpenH323 Project on Windows XP (v5.1.2600-i586 (Model=15 Stepping=6)) at 2008/9/15 13:55:07.484 Waiting for incoming H.323 calls from tcp$*:1720 Searching for gatekeeper... No gatekeeper found. Waiting for incoming SIP calls from tcp$*:5060,udp$*:5060
Если вы вдруг увидели такое:

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

T38Modem Version 1.0.0 ... Catastrophic failure, PProcess::Current() = NULL!! 
это означает, что вы невнимательно п.6 подпункт 4) и opal.dll у вас скомпилировался неправильно.
9.Устанавливаем и настраиваем Null-modem emulator (com0com)
1)Скачиваем http://sourceforge.net/projects/com0com/
2)Устанавливаем (соглашаемся с автоматической установкой всех драйверов что предложит)
3)Настраиваем Пуск->Программы->com0com->Setup
У нас должны получиться 2 Virtual Port Pair (будем запускать 2 модема):

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

Virtual Port Pair 0 COM14 CNCB0 Virtual Port Pair 1 COM15 CNCB1
CNCB0 и CNCB1 -оставляем как предлагает программа, они смотрят в сторону T38modem
COM14 и COM15 -назначаем свободные порты, они смотрят в сторону нашей факс-программы, имена должны быть нормальные, ибо VentaFax напр. просто не увидит кривое имя CNCA0.
10.Формируем справочные файлы (для удобства)
1)В папке где у нас находится t38modem.exe выполняем команду:

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

C:\MyModem>t38modem.exe -h > help.txt
в рез-те получаем справочный файл help.txt где подробно описаны опции запуска модема
2)Открываем файл C:\t38modem\README в WORD и сохраняем в удобочитаемом формате ReadMe.doc в папке C:\MyModem.
11.Конфигурируем модем(ы), для чего:
В рабочей папке C:\MyModem создаем файл modem.bat и пишем внутрь него следующее:

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

t38modem.exe -tt --no-h323 -u T38modem --sip-old-asn --sip-listen udp$192.168.11.2:6060 --sip-redundancy 2 -p \\.\CNCB0,\\.\CNCB1 --route "modem:.*=sip:@192.168.11.5:5060" --route "sip:.*=modem:"
--no-h323 //работаем по SIP
-u T38modem //username
--sip-old-asn //как правило без этого параметра факсы если и ходят,то плохо
--sip-listen udp$192.168.11.2:6060 //сидим и принимаем звонки на порту udp6060 192.168.11.2-наш ip
-p \\.\CNCB0,\\.\CNCB1 //запускаем 2модема на виртуальных портах CNCB0 и CNCB1 (что соотв. com14 и com15 согласно настройкам com0com)
--route "modem:.*=sip:@192.168.11.5:5060" //все исходящие звонки направляем на 192.168.11.5 порт 5060 (напр.на Asterisk)
12.Запускаем модемы, для чего:
Жмем на файл modem.bat, модемы работают.
12А.Настраиваем SIP-сервер (Asterisk).
К сожалению, на настоящий момент T38modem не поддерживает авторизацию по паролю и регистрацию на SIP-сервере, поэтому единственным понятным способом посылать факсы на внешнего SIP-провайдера является использование его совместно с Asterisk.
Корректное использование с Asterisk в части исходящей связи стало возможным благодаря dimas с www.asteriskforum.ru
Описание настройки и правки Asterisk можно найти тут:
http://www.voipinfo.ru/forum/viewtopic.php?t=11767
14.Настраиваем факсовую программу.
1) Можем просто указывать COM14, COM15 если программа это позволяет (VentaFax).
2) Можем через панель управления создать "Стандартный модем 14400" и посадить его на COM14(COM15) и пользоваться всеми прелестями (и недостатками) TAPI. Для Microsoft Fax без этого не обойтись.
15.Принимаем-отправляем факсы.
#2 22.09.2008 01:49
При использовании WIN-версии модема обнаружены некоторые негативные моменты.
Модем неплохо работает на незагруженном (пользовательском) PC. Но если нагрузка на PC в плане выполнения разного рода коммуникационно-телефонных программ достаточно велика, то он начинает "включать тормоза". Визуально это выражается в периодической задержке вывода букв на экран в дебаг-сообщениях. Практически начинает слегка путать AT-команды при взаимодействии с факс-программой, что приводит к нек. кратковременным сбоям.
Есть 3 версии:
1) WIN виноват
2) некоторая недоработанность com0com
3) неадекватное поведение AMD-процессора (в моем конкретном случае).
Я бы не торопился ругать винды. Больше склоняюсь к третьей версии. Дело в том, что за этим AMD неоднократно были замечены странные вещи в таком духе при выполнении разного рода программ.
Говоря по-русски: "дай ка я секундочку подумаю, а потом сделаю быстро-быстро, а если вы так не хотите работать, так катитесь"
Конкретно на этом PC не умеют долго работать winPcap и одна разработка, основанная на CAPI. Тогда как на INTEL все OK.
Ясно одно: надо оценивать ситуацию с т.зр. конкретного случая.
P.S. при использовании T38modem в AndLinux на этом же PC при той же загрузке глюков не замечено.
#3 22.10.2008 07:15

Т38модем Сборка для Вин ХП

Собрал может кому пригодится )
#4 27.06.2010 09:15
собрана trunk-версия t38modem на 26.06.2010
поддержка G.711 fax, sip регистрации и ещё чего-нибудь...

какой Framewor нужен точно не знаю (переносить не пробовал) у мну Framewor 3.5

все возможные опции по команде: t38modem.exe -h

см. вложение
#5 06.02.2015 10:38
здравствуйте,
а кто либо сопрягал t38modem с Windows службой факсов ?

Может я уж запутался. Но ….

Есть
t38modem.exe

установил com0com
получил в устройствах Виндоус порты
com0com - serial port emulator (COM3)
в свойствах location CNCA1

com0com - serial port emulator (COM4)
в свойствах location CNCB1


запускаю
t38modem.exe -tt --no-h323 --sip-old-asn --sip-listen udp$ServerIP:5060 --sip-redundancy 2 -p \\.\COM3,\\.\COM4

WindowsFax monitor входящих звонков не видит

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

>t38modem.exe -tt --no-h323 --sip-old-asn --sip-listen udp$ServerIP:5060 --sip-redundancy 2 -p \\.\COM3,\\.\COM4 T38Modem Version 1.2.1 (OPAL-3.8.1/3.8.1, PTLIB-2.8.1/2.8.1 (svn:24307)) by Vyacheslav Frolov on Windows Vista (v6.0.6002-i586 (Model=15 Stepping=1)) unknown option "--sip-old-asn" unknown option "--sip-redundancy" 2015/02/06 14:48:46.833 T38Modem Version 1.2.1 by Vyacheslav Frolov on Windows Vista (v6.0.6002-i586 (Model=15 Stepping=1)) with PTLib (v2.8.1 (svn :24307)) at 2015/2/6 14:48:46.833 2015/02/06 14:48:46.849 T38Modem T38Modem Version 1.2.1 (OPAL-3.8.1/3.8.1, PTLIB-2.8.1/2.8.1 (svn:24307)) on Windows Vista (v6.0.6002-i586 (Model=15 Steppi ng=1)) 2015/02/06 14:48:46.865 T38Modem ModemEndPoint::ModemEndPoint 2015/D0i2s/a0b6l e1d4 :H4.83:2436 .p8r6o5t o c o l COM3(b):c6c RenameCurrentThread old ThreadName=PseudoModemC0C:3180 2015/02/06 14:48:46.865 COM3(b):c6c Started for \\.\COM3 (accepts all) 2015/02/06 14:48:46.865 COM3(b):c6c ModemEndPoint::OnMyCallback command=addmodem extra=10 2015/02/06 14:48:46.880 COM3(b):c6c ModemEndPoint::OnMyCallback request={ command=addmodem response=confirm modemtoken=COM3 } 2015/02/06 14:48:46.880 COM3(b):c6c CurrentRxQueue=4096 2015/02/06 14:48:46.880 COM3(b):c6c PseudoModemBody::OpenC0C opened \\.\COM3 2015/02/06 14:48:46.880 COM4(bWa)i:t7i4n4g fRoern ianmceoCmuirnrge nStITPh rceaaldl so lfdr oTmh ruedapd$N1a0m.e6=7P.s8e1u.d1o0M4o:d5e0m6C00 C:1860 2015/02/06 14:48:46.896 COM4(b):744 Started for \\.\COM4 (accepts all) 2015/02/06 14:48:46.896 COM4(b):744 ModemEndPoint::OnMyCallback command=addmodem extra=10 2015/02/06 14:48:46.896 COM4(b):744 ModemEndPoint::OnMyCallback request={ command=addmodem response=confirm modemtoken=COM4 } 2015/02/06 14:48:46.911 COM4(b):744 CurrentRxQueue=4096 2015/02/06 14:48:46.911 COM3(i):fb4 RenameCurrentThread old ThreadName=InC0C:4020 2015/02/06 14:48:46.911 COM3(i):fb4 --> Started 2015/02/06 14:48:46.911 COM3(e):338 RenameCurrentThread old ThreadName=ModemEngine:824 2015/02/06 14:48:46.911 COM3(e):338  Started 2015/02/06 14:48:46.927 COM4(b):744 PseudoModemBody::OpenC0C opened \\.\COM4 2015/02/06 14:48:46.927 COM3(o):bf0 RenameCurrentThread old ThreadName=OutC0C:3056 2015/02/06 14:48:46.927 COM3(o):bf0