新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > TAPI軟電話通信系統的模塊化設計

        TAPI軟電話通信系統的模塊化設計

        作者: 時間:2015-04-18 來源:網絡 收藏

          3. 1 應用控制類設計

        本文引用地址:http://www.104case.com/article/272752.htm

          TapiA pplicat ion是對的管理,它處于調用結構的頂層,通過下層的服務為上層應用程序提供透明、規格化的信息服務。在通過進行遠程程序設計時,必不可少的是要調用lineIn itia lizeEx( )函數以初始化TAPI,以及調用lineOpen( )函數以打開線路,然后才能使用TAPI進行監控和代理呼叫等功能。除此之外,為了編寫可靠的遠程程序,還應調用有關檢測線路設備能力的函數lineGetDevC aps( ),檢測TAPI版本兼容性函數lineN egotiateAPIV ersion( ),檢測線路當前使用狀態的函數lineSetStatusM essages( )等以適應各種情況。最后調用lineC lose( )函數來關閉線路,調用lineShutdow n( )函數將應用程序與TAPI斷開。

          為了使TAPI便于操縱,適應不同的應用開發環境,本文設計了In itia liseTAPI( )這個不要參數的初始化函數,把初始化和協商TAPI版本所需要的參數通過內聯機制進行整合,避免了過多的參數傳遞。初始化成功后表明應用程序已經獲得TAPI的數據結構和應用句柄。為了便于對設備的控制,需要和通信設備取得聯系并打開通信線路。本文設計了OpenValidL ines( )這個不加參數的函數,只要成功返回后就可以對通信線路、通信設備進行控制了,其函數聲明如下:

          class T apiApplicat ion

          {

          pub lic:

          Tap iApp lication( CTap isamp leD lg lg) ;

          ~ T apiApplicat ion( );

          / / TAPI helper funct ions

          BOOL InitialiseTAPI( ) ; / / Initialize TAPI

          void ShutdownTAPI( ); / /C lose TAPI

          void OpenV alidL ines ( ) ; / /Open the lines o fTAPI

          / / Variab les

          CTapisamp leD lg lg;

          HLINEAPP m_hLineApp; / / App lication handle

          DWORD m_NumDevs; / / Number of dev ices

          DWORD * m _ ApiV ersions; / / API versions

          PTAPILINE* m_pL ines; / / Device variables

          LONG m _Curren tL ine; / / currently se lected

          ADDRARRAY m_AddressA rray;

          };

          TAPI初始化工作和有效線路的打開這些復雜的功能,通過函數內置或全局變量傳遞,整合成一個不要參數并且返回值為布爾類型的API函數。應用程序只要調用這兩個函數就可以實現對TAPI設備的監控和操作。

          3. 2 TAPI線路控制類設計

          Tap iLine是對TAPI線路的管理,為了使程序的結構更為清晰和易于升級以及為了使TAPI能夠更方便的移植到別的應用程序中,把TAPI函數中用于實現功能的一部分函數和數據結構封裝成一個類來使用。下面就是通過V ISUALC + +編程實現對TAPI線路控制函數封裝類的頭文件。

          class T apiL ine {

          private:

          TapiA pplicat ion ainA pp; / / paren t object

          DWORD m _LineID; / / My index

          HLINE m _ hL ine; / / M y line hand le typedef

          CL ist

          ExtensionLis;t m_extensionLis;t

          / / the list of call channe l

          public:

          TapiL ine( TapiApp licat ion

          ~ Tap iLine( ) ;

          vo id OnEvent ( DWORD Device, DWORD Msg,

          DWORD Param1, DWORD Param2, DWORD Param3);

          HRESULT Open ( DWORD L ineID, DWORD

          Ca llPr iv ilege, DWORD Med iaModes);

          TapiChanne*l getChannel( DW dwAddressID);

          TapiChanne*l getChanne lCall(HCALL hcall) ;

          / / Functions to support te lephony commands

          BOOL M akeCa ll ( DWORD dwAddressID, LPCT??

          STR pszA ddress) ;

          vo id D ropCall( DWORD dwA ddressID) ;

          vo idHo ldCall( DWORD dwA ddressID) ;

          vo id UnholdC all( DWORD dwAddressID) ;

          vo id B lindT ransferCa ll ( DWORD dwAddressID,

          LPCTSTR pszAddress) ;

          vo id R edirect ( DWORD dwAddressID, LPCTSTR

          pszAddress) ;

          vo id Ca llStatus( DWORD dwAddressID );

          vo id Ca llInfo( DWORD dwA ddressID) ;

          vo id Addressstatus( ) ;

          };

          TapiL ine通過復雜的參數傳遞機制,封裝了大量的內部變量,通過API接口以統一短消息的形式接收用戶指令同時返回線路的具體狀態。最終應用程序通過調用Tap iL ine的具體函數對整個線路進行操作、控制。

          3. 3 TAPI通話控制類設計

          TapiChanne l是對具體通話進行控制,呼叫是TAPI開發最常用的一個功能。調用Tap iL ine的M akeC all ( DWORD dwAddressID,LPCTSTR pszAddress),傳遞當前號碼和目標地址就可以進行撥打電話,把撥打電話的其他細節進行內部傳遞。當以上函數調用成功后,TSP就會控制通訊設備外呼指定的電話,該函數調用后會立刻返回到應用程序,但該電話是否成功撥通,則是依靠消息來判斷,包括TAPI的其他功能也是這樣的處理方式。其他常用的電話功能如接聽、掛斷、轉移、三方等都有對應的函數實現。

          TAPI初始化成功后,應用程序就和TSP設備建立了聯系。應用程序就可以通過TAPI函數控制電話線路、監控線路狀態。函數lineOpen調用成功后進入消息循環,新生成的呼叫處于IDLE狀態,隨后根據狀態指令執行不同的操作。當調用lineM akeC all( )后,線路狀態進入D IAL ING、PROCEDING,當收到異步響應或者應答后進入呼叫狀態循環并依次進入CONNECTED和DISCONNECTED,最后回到初始化狀態。當有一路電話呼入時,線路狀態進入OFFER ING、自動調用lineAnsw er( )后進入ACCEPTED、PROCED ING,當收到異步響應或者應答后進入呼叫狀態循環并依次進入CONNECTED和D ISCONNECTED,最后回到初始化狀態,整個TAPI狀態圖如圖4所示。

          

         

          圖4 TAPI狀態機。

        c++相關文章:c++教程


        數字通信相關文章:數字通信原理


        通信相關文章:通信原理


        交換機相關文章:交換機工作原理




        關鍵詞: TAPI 通信

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 甘德县| 淮南市| 马山县| 阿勒泰市| 阿拉尔市| 临武县| 图木舒克市| 南部县| 南丰县| 高州市| 罗山县| 卢氏县| 马龙县| 乐昌市| 仙桃市| 全南县| 祁门县| 扶余县| 平罗县| 亚东县| 宁远县| 锡林郭勒盟| 安庆市| 正宁县| 利川市| 财经| 即墨市| 迁西县| 南宁市| 溧水县| 璧山县| 青河县| 厦门市| 保靖县| 汶川县| 乐至县| 扶余县| 新昌县| 杭州市| 夏邑县| 卢湾区|