| 
 7. CT ADE 體系結(jié)構(gòu)(Topaz)介紹7.1.3. CTADE_A,路由
 7.1.4. CTADE_A,路由類型:全雙工和半雙工
 7.1.5. CTADE_A, 呼叫控制、掛機(jī)處理和掛斷事件
 7.1.6. CTADE_Architecture技術(shù)
 7.1.7. CTADE_A 特征ID
 7.1.8. CTADE_A. 設(shè)置,TOPAZ.INI
 7.1.9CTADE_A. 提示音(Tones)
 
 8. VOS 運(yùn)行日志
   7. CT ADE 體系結(jié)構(gòu)(Topaz)介紹  7.1.3. CTADE_A,路由
 許多電話操作需要兩種資源共同工作。例如,向呼叫者播放一段語(yǔ)音要求使用媒體資源播放文件,使用中繼資源建立與呼叫者的連接。中繼資源必須偵聽(tīng)媒體資源的輸出,這樣呼叫者才能聽(tīng)到播放的文件,媒體資源應(yīng)該偵聽(tīng)中繼資源,這樣才能處理呼叫者輸入的數(shù)字。
 在大多情況下,用戶不需明確地控制路由:缺省狀態(tài)下,CTADE_A通過(guò)用戶使用的函數(shù)將用戶所需的資源路由到一起。例如,當(dāng)播放一個(gè)文件時(shí),CTADE_A確定當(dāng)前媒體資源已經(jīng)路由到了當(dāng)前中繼資源上。
 但用戶可以替換Topaz的自動(dòng)路由。
 看下面的一個(gè)例子:
 ·如果有一個(gè)媒體資源,MediaUse函數(shù)預(yù)留媒體資源并且將其路由到當(dāng)前的中繼資源上。
 ·缺省狀態(tài)下,F(xiàn)axUse函數(shù)預(yù)留一個(gè)與當(dāng)前中繼資源兼容的傳真資源,并且將兩者路由到一起。
 ·如果使用MediaPlayFile函數(shù)時(shí)還沒(méi)有打開(kāi)一個(gè)媒體資源,播放文件前,Topaz會(huì)保留一個(gè)媒體資源,并且把它路由到當(dāng)前的中繼資源,如果沒(méi)有保留中繼資源,Topaz在保留媒體資源前會(huì)先保留一個(gè)中繼資源。
 ·向一個(gè)會(huì)議添加任何資源時(shí),Topaz都會(huì)將兩者路由到一起。
 然而,也可以調(diào)用下面的函數(shù)使自動(dòng)路由失效:
 TopazDisableAutoRoute();
 可以調(diào)用下面的函數(shù)使自動(dòng)路由重新有效:
 TopazEnableAutoRoute();
 
   7.1.4. CTADE_A,路由類型:全雙工和半雙工
 如果使用全雙工連接,兩種資源之間有雙向的路由,如下圖所示。每一種資源偵聽(tīng)其他資源的傳輸,典型的情況如媒體和中繼設(shè)備之間的相互路由:
 
   然而,半雙工中,只是一種資源偵聽(tīng)另一種資源: 
   一個(gè)全雙工連接函數(shù)TopazRoute(Res1, Index1, 
                                Res2, Index2)可以創(chuàng)建如第一個(gè)圖所示的路由,資源2在偵聽(tīng)資源1,反過(guò)來(lái),資源1也在偵聽(tīng)資源2。
 一個(gè)全雙工路由相當(dāng)于兩個(gè)偵聽(tīng)命令。
 一個(gè)半雙工連接如第二個(gè)圖所示,資源2在偵聽(tīng)資源1,但反過(guò)來(lái)資源1沒(méi)有偵聽(tīng)資源2(除非之前有路由命令使資源1偵聽(tīng)資源2)。
 
 7.1.5. CTADE_A, 呼叫控制、掛機(jī)處理和掛斷事件
 
 掛斷過(guò)程中有兩個(gè)重要的問(wèn)題:
 ·檢測(cè)呼叫者何時(shí)掛斷
 ·掛斷時(shí)處理
 
 7.1.5.1.掛斷檢測(cè)
 
 掛斷檢測(cè)操作可以體現(xiàn)出Topaz API透明性的好處。因?yàn)楫?dāng)使用中繼函數(shù)開(kāi)發(fā)應(yīng)用程序時(shí),不需要考慮CTADE_A進(jìn)行掛斷檢測(cè)的技術(shù)細(xì)節(jié)。
 當(dāng)使用開(kāi)發(fā)的應(yīng)用程序時(shí),可以使用相同的VOS代碼,不用考慮系統(tǒng),只需要改變一下Topaz的一下設(shè)置細(xì)節(jié)即可。
 
 7.1.5.2 掛斷處理
 
 檢測(cè)到呼叫者的掛斷操作后,VOS在當(dāng)前的p-code指令執(zhí)行完后(可能正在語(yǔ)句和表達(dá)式執(zhí)行中)停止運(yùn)行,并將控制權(quán)交給onhangup函數(shù)。然后onhangup函數(shù)就會(huì)一種執(zhí)行,直到遇見(jiàn)重啟、返回或掛斷結(jié)束(endhangup)的語(yǔ)句。如果遇見(jiàn)endhangup語(yǔ)句,效果與return語(yǔ)句相同,如果遇見(jiàn)return語(yǔ)句,程序返回到中斷的語(yǔ)句繼續(xù)執(zhí)行,如果處理onhangup的過(guò)程中又有一個(gè)掛斷事件發(fā)生,此事件將會(huì)被忽略。
 大多應(yīng)用中,建議使用restart將控制權(quán)交回程序的開(kāi)始,這樣會(huì)使體系結(jié)構(gòu)比較明確。
 如果掛斷發(fā)生時(shí)正在執(zhí)行象MediaPlayFile、MediaRecordFile或MediaWaitDigits等異步CTADE_A函數(shù)。VOS會(huì)中斷函數(shù),立即轉(zhuǎn)到onhangup處理。
 如果掛斷發(fā)生時(shí)只在執(zhí)行其他的阻塞函數(shù)如sem_set或ser_rdbuf。VOS直到函數(shù)完成后再轉(zhuǎn)到onhangup處理。
 TrunkDeferOnHangup函數(shù)和TrunkClearDeferOnHangup函數(shù)允許應(yīng)用程序定義關(guān)鍵代碼區(qū),這些代碼區(qū)不允許被onhangup處理函數(shù)中斷。一個(gè)典型的例子就是一組數(shù)據(jù)庫(kù)更新,一旦開(kāi)始,必須完全接收。當(dāng)有掛斷事件時(shí),TrunkDeferOnHangup函數(shù)后面的任何電話阻塞函數(shù)都將終止。控制權(quán)交給onhangup函數(shù)的操作被推遲,直到函數(shù)TrunkClearDeferOnHangup。
 例:
 
   7.1.6. CTADE_Architecture技術(shù)
 CTADE_Architecture(Topaz)是為API的透明性設(shè)計(jì)的,即一套程序可以在所有的電話API和所支持的所有中繼類型下運(yùn)行。但某些特征只適用于某種技術(shù),例如,GloblaCall系統(tǒng)發(fā)送記帳比率信息,但其他中繼接口API不使用協(xié)議定義的記帳比率。所以,函數(shù)TrunkGetBilling不能提供R4GcTrunk技術(shù)到其他技術(shù)的接口,所以是不透明的。
 VOS提供了控制電話資源技術(shù)細(xì)節(jié)的函數(shù),象TrunkGetInt一樣,Get/Set函數(shù)可以操作特定的技術(shù)參數(shù)和API函數(shù)。
 Get/Set函數(shù)可以讀取和設(shè)置CTADE_A中只應(yīng)用于特殊技術(shù)的參數(shù)。
 Get函數(shù),象MediaGetInt返回技術(shù)的布爾、字符串和整數(shù)參數(shù),比如,要獲取R4DxMedia資源當(dāng)前的播放聲音的大小,可以使用MediaGetInt函數(shù)和REGID_PlaySpeed 
                                RegID(702):
 Value = MediaGetInt(702);
 Set函數(shù),象MediaSetInt可以設(shè)定技術(shù)參數(shù),例如要設(shè)定R4DxMedia資源當(dāng)前播放聲音值為7,可以使用MediaSetInt函數(shù)和REGID_PlaySpeed(702):
 MediaSetInt(702, 7);
 注意:必須注意,調(diào)用API級(jí)的函數(shù)設(shè)置一個(gè)CTADE_A參數(shù)可能不只改變電路板級(jí)的參數(shù)。例如,R4DxMedia中,使用函數(shù)MediaSetBool設(shè)置REGID_R4DxMediaDisableAllToneDetection(280)為0或1來(lái)清除Dialogic提示音ID。
 MediaSetBool(280, 0);
 此處函數(shù)MediaSetBool沒(méi)有設(shè)置Board級(jí)的參數(shù)為0,此函數(shù)調(diào)用Dialogic的函數(shù)dx_deltones來(lái)刪除以前在此通道上的用戶定義提示音。
 要詳細(xì)了解VOS中可用的函數(shù)和方法以及更多例子,參見(jiàn)Get/Set函數(shù)。
 可以從CTADE_A RegIDs中找到一系列可用的RegIDs。
 當(dāng)前的CTADE_A技術(shù)如下:
 
 中繼技術(shù)
 技術(shù)    ID號(hào)碼  描述
 SimTrunk  1001   SimPhone Trunk
 R4AgTrunk  1002   R4 ag_ / dx_ API (aka LSI)
 R4GcTrunk  1003   R4 gc_ API
 S100Trunk  1005   S.100 CTscr_ API
 R4MsTrunk  1006   R4 ms_ station API
   媒體技術(shù)技術(shù)    ID號(hào)碼  描述
 SimMedia  2001   SimPhone Media
 R4DxMedia 2002   R4 dx_ API (aka VOX)
 S100Media 2003   S.100 CTplyr_/CTrcdr_ API
 WaveMedia 2004   Win32 Wave API
 
 傳真技術(shù)
 技術(shù)   ID號(hào)碼 描述
 R4FxFax 3001  R4 fx_ API
 R4GrtFax 3002  GammaLink fax
 S100Fax 3003  S.100 Fax
 
 會(huì)議技術(shù)
 技術(shù)   ID號(hào)碼 描述
 R4MsConf 5001  R4 ms_ conference API
 R4DcbConf 5002   R4 dcb_ API
 S100Conf 5003  S.100 CTconf_ API
 
   例如,下面為R4DxMedia技術(shù)的一些(some3)RegId:R4DxMedia RegIDs
 
   7.1.7. CTADE_A 特征ID
 特征ID
 保存在Topaz 特征(Profile)中的一些描述系統(tǒng)細(xì)節(jié)的RegID稱為特征ID。Profile的內(nèi)容可以通過(guò)TopazProfile.exe 
                                -L命令來(lái)查看,Profile的內(nèi)容產(chǎn)生一個(gè)包含文件,產(chǎn)生的文件中的每一項(xiàng)都代表一個(gè)特征(Profile)ID。
 可以通過(guò)適當(dāng)?shù)腉et函數(shù)獲得特征(profile)ID的值,例如,要查出是否支持ANI(呼叫者ID),可以使用函數(shù)TrunkGetBool 
                                和REGID_ANISupported(301):
 Support = TrunkGetBool(301);
 Topaz Profile是類似于Windows注冊(cè)表的一個(gè)數(shù)據(jù)庫(kù),是一個(gè)文件和目錄樹(shù),包括以下信息:
 ·所有安裝的硬件資源細(xì)節(jié),由資源掃描器決定。
 ·用戶提供的硬件配置信息,資源掃描器檢查不到。
 ·用戶可設(shè)的選項(xiàng),象缺省的語(yǔ)言(英語(yǔ)、西班牙語(yǔ)… …)。
 運(yùn)行的VOS應(yīng)用程序把Profile當(dāng)作只讀來(lái)處理,這些程序開(kāi)始運(yùn)行前,Profile應(yīng)該完全初始化。
 Topaz Profile中不包含任何動(dòng)態(tài)改變的信息,象某一資源的狀態(tài)等等。
 Profile中的各項(xiàng),稱為Profile ID,具有名字和值。某一項(xiàng)的名字與一個(gè)文件系統(tǒng)中的路徑名相似。所有的名字從根段開(kāi)始,以反斜線表示。比如,Topaz 
                                代碼內(nèi)部使用的Profile ID如下:
 \Techs\TechCount
 TechCount的值是本PC機(jī)安裝的不同的CTADE_A提示的數(shù)目(一個(gè)技術(shù)是指一個(gè)特定的硬件和相應(yīng)的API函數(shù),如DialogicR4 
                                VOX)。
 值分三種類型:整數(shù),字符串和布爾值(True/False)。
 常常可以看到如下的數(shù)值和名字:
 \Techs\TechCount=4
 一個(gè)Topaz 目錄可以包含一些數(shù)值,象TechCount,也可以包含一個(gè)數(shù)值數(shù)組,名字相同,索引不同。(Topaz不允許在同一目錄下既包含數(shù)組又包含非數(shù)組值)。如,\TechTypes
 包含一個(gè)整數(shù)值的數(shù)組,\TechTypes[0],\TechTypes[1],…..最大的索引為T(mén)echCount-1。
 此例中數(shù)組可以包含連續(xù)的索引,或數(shù)組的索引可以不連續(xù),比如,可以只有A[1]、A[16]和A[19]有值。如果數(shù)組的索引不連續(xù),CTADE_A要求有一個(gè)索引連續(xù)的數(shù)組,其值為上個(gè)數(shù)組中有值的索引,如上例,可以有另一個(gè)數(shù)組B[0]=1,B[1]=16和B[2]=19.設(shè)計(jì)規(guī)則:CTADE_A
 不需要查詢提供的第一個(gè)數(shù)組,但需要查找第二個(gè)數(shù)組的值以及指定數(shù)組大小的值。比如TechCount。這有助于提供系統(tǒng)的前向和后向的兼容性,并且提高資源掃描器改變時(shí)程序的健壯性。
   7.1.7.1. 更新Topaz Profile
   TopazProfile 數(shù)據(jù)庫(kù)使用下面程序進(jìn)行更新:C:\Program Files\Parity Software\Common\Topaz\Bin\TopazProfile.exe
 TopazProfile.exe是一個(gè)Win32平臺(tái)的應(yīng)用程序,有以下的選項(xiàng):
 ·-S 掃描設(shè)備(刪除Profile并且重新建立)
 ·-L 將Profile列入"TopazProfile.exe"
 ·-D 刪除Profile
 ·-C<file> 從文件中向Profile拷貝關(guān)鍵字
 ·-I 與-C一樣更新Profile,文件名取自"TOPAZ.INI"的[ProfileInclude 
                                Files]
 部分。
 ·-F<file> 讀取文件,標(biāo)準(zhǔn)輸出
 ·-K 以整數(shù)值排列關(guān)鍵詞(缺省以字母排列)
 創(chuàng)建和設(shè)置Topaz Profile文件
 與Windows注冊(cè)表不同,用戶的應(yīng)用程序不能直接訪問(wèn)Profile,并且不能創(chuàng)建新的條目。Profile只能由Topaz在內(nèi)部使用。
 完成下列設(shè)置后通過(guò)運(yùn)行TopazProfile程序創(chuàng)建TopazProfile。
 缺省的情況下,TopazProfile安裝在主機(jī)的系統(tǒng)盤(pán):
 C:\Program Files\Parity Software\Common\Topaz\Profile
 為了Topaz能夠運(yùn)行,文件Topaz.ini的[Profile]部分必須指定Topaz 
                                Profile的路徑。
 "通過(guò)在Topaz設(shè)置文件(Topaz.ini)和Profile包含文件中添加合適的條目,在Topaz 
                                Profile設(shè)置某種資源參數(shù)。"
 RegId和Get/Set函數(shù)
 Topaz通過(guò)在內(nèi)部使用其他的RegID來(lái)操作技術(shù)級(jí)的信息。這些RegID不在Topaz 
                                Profile中,但可以通過(guò)Get/Set函數(shù)檢索系統(tǒng)信息或執(zhí)行一個(gè)技術(shù)級(jí)的命令。
 下列RegIDs用于Get/Set函數(shù)中。同時(shí)也列出了每種技術(shù)的特定RegID。
 看下列RegsID:
 
 7.1.7.2Topaz RegID:R4AgTrunk
 
   7.1.7.3
 7.1.7.4 Topaz RegID:R4DxMedia
  
   
   
   
 
   7.1.7.5 Topaz RegID:R4GcTrunk  
   
 
   7.1.7.6 Topaz RegID:R4MsTrunk 
   7.1.7.7. Topaz RegIDs: S100Conf 
   7.1.7.8. Topaz RegIDs:S100Fax 
   7.1.7.9. Topaz RegID:S100Media 
   7.1.8. CTADE_A. 設(shè)置,TOPAZ.INI
 Topaz.ini文件設(shè)定系統(tǒng)首次Topaz引擎時(shí)所要讀取的各種設(shè)置參數(shù)。要改變Topaz.ini中的任何項(xiàng)時(shí),必須確保這些變化生效時(shí)VOS和CallSuite的所有例程已全部關(guān)閉,因?yàn)檫@些例程使用Topaz。
 
   7.1.8.1 [Profile]部分
 Topaz.ini文件的Profile部分設(shè)定開(kāi)始時(shí)控制Topaz Profile的參數(shù)
 
 
 7.1.8.2. [ProfileIncludeFiles] 部分
 
 Topaz.ini文件的ProfileIncludeFiles部分列出了每次TopazProfile.exe運(yùn)行時(shí)(使用Include選項(xiàng))都要拷貝到Topaz 
                                Profile的文件。例:
 
 
 7.1.8.3. [ProfileExcludeTechnologies]部分
 
 Topaz.ini文件中的ProfileExcludeTechnologies部分列出了TopazProfile.exe自動(dòng)掃描時(shí)排除的技術(shù)。 
                                例:
 
 
 7.1.8.4. [ProfileDependencies] 部分
   Topaz.ini文件的ProfileDependencies部分列出了TopazProfile.exe運(yùn)行前必須啟動(dòng)的Windows 
                                NT/2000的服務(wù)程序。例:
 7.1.8.5. [SimMediaScanner]部分
 
 Topaz.ini文件的SimMediaScanner部分指定了SimMedia使用的Wave 
                                IN和Wave Out 設(shè)備的ID。
 
 缺省情況下,兩個(gè)Wave ID都為0。例:
 7.1.8.6 [WaveScanner]部分
 
 Topaz.ini文件的WaveScanner部分指定了WaveMedia技術(shù)所使用的Wave 
                                IN和Wave Out 設(shè)備的ID。例:
 
 
 7.1.8.7. [S100Groups] 部分
 
 Topaz.ini文件的S100Groups部分指定了應(yīng)用程序所使用的S100組和相關(guān)的Topaz資源。
 S100Groops部分的缺省設(shè)置保存在[S100Defaults]部分中。例:
 
 
 7.1.8.8. [S100Defaults]部分
 
 Topaz.ini文件的S100Defaults部分指定S100Groups部分的缺省值,如果沒(méi)有設(shè)定S100Defaults部分的關(guān)鍵詞,Topaz使用標(biāo)準(zhǔn)的缺省設(shè)置。有效的關(guān)鍵詞和相應(yīng)的缺省值如下例所示: 
                                例:
 
 
 MakeCallGroupSet、SPROnlyGroupSet和SPRGroupSet只用于CT 
                                Media版本V1。版本V2中被刪除。
 此部分的詳細(xì)描述參見(jiàn)S100Topaz.ini配置中此部分的描述和S100Groups部分。
 
 7.1.9CTADE_A. 提示音(Tones)
 
 此章中介紹如何產(chǎn)生和檢測(cè)提示音。
 
 7.1.9.1 播放提示音
 
 Tones,也稱為全程Tones或全局Tones,可以為以下4中類型:?jiǎn)我、雙音、有步調(diào)的單音和有步調(diào)的雙音。
 單音和雙音
 單音只有一個(gè)幅度和頻率,雙音有兩套幅度和頻率。公眾網(wǎng)中的大部分相似的聲音,包括Touch-tones,都是雙音。
 步調(diào)
 步調(diào)音有規(guī)則的步調(diào),一段為音調(diào),一段為靜音。在美國(guó),忙音采用步調(diào)音,步調(diào)如下所示:
 
   沒(méi)有步調(diào)的音稱為連續(xù)音,比如,摘機(jī)音是連續(xù)音。   播放音調(diào)可以使用函數(shù)MediaPlaySingleContinuousTone播放一段連續(xù)音。
 MediaPlaySingleContinuousTone(Freq1, 
                                Amp1, Duration, StopTones);
   Freq1參數(shù)定義聲音的頻率,可在300到2000hz之間。Amp1定義聲音的幅度,有效的范圍為-40到2dB。Duration 
                                參數(shù)指定聲音的長(zhǎng)度,以0.1秒為單位。StopTones參數(shù)是一個(gè)摘機(jī)音(touch tone)位的字符串,可以中斷任何語(yǔ)音文件的播放和錄制。使用函數(shù)MediaPlayDualContinuousTone播放一段連續(xù)的雙音:
 MediaPlayDualContinuousTone(Freq1, Amp1, 
                                Freq2, Amp2, Duration, StopTones);
   除了Freq2和Amp2這兩個(gè)參數(shù)外,其他參數(shù)和函數(shù)MediaPlaySingleContinuousTone的參數(shù)相同,F(xiàn)req2和Amp2指定雙音第二部分的頻率和幅度。播放步調(diào)音的函數(shù)與播放連續(xù)音的函數(shù)相同:
 MediaPlaySingleCadenceTone(Freq1, Amp1, 
                                OnTime, OffTime, Count, StopTones);
 MediaPlayDualCadenceTone(Freq1, Amp1, 
                                Freq2, Amp2, OnTime, OffTime, Count,
 StopTones);
   除了參數(shù)Freq1、Amp1、Freq2和Amp2外,OnTime參數(shù)指定播放聲音的時(shí)間長(zhǎng)度,由0.1秒為單位表示,OffTime參數(shù)指定靜音的時(shí)間長(zhǎng)度,也由0.1秒為單位表示。Count參數(shù)指定了步調(diào)重復(fù)的次數(shù)。如果在Topaz Profile中指定了某一聲音的參數(shù),就可以在媒體資源中使用函數(shù)MediaPlayTone來(lái)播放:
 MediaPlayTone(ToneName, StopTones);
 參數(shù)ToneName必須與Topaz Profile中設(shè)置的聲音名字一致,可選的StopTones參數(shù)指定停止音。
 
   7.1.9.2. Tone 包含文件
 tone包含文件以.TZP為擴(kuò)展名,指定了CTADE_A直接支持的聲音。
 注意:
 要從聲音包含文件中向Topaz Profile中添加信息,必須使用TopazProfile.exe(使用Copy命令,-C)將Topwz 
                                Profile和包含的文件合并起來(lái)。為了保證每次CTADE_A啟動(dòng)時(shí)都合并最新的聲音包含文件,可以使用函數(shù)TopazProfile.exe(使用Include選項(xiàng),-I)向Topaz.ini文件的[ProfileIncludeFiles]部分添加一個(gè)索引。
 ToneCount
 ToneCount Profile ID指出需要定義的聲音的數(shù)目,從0開(kāi)始。
 
 ToneName
 VOS應(yīng)用程序使用ToneName來(lái)確定播放哪一個(gè)聲音。
 ToneType
 當(dāng)前CTADE_A支持四種聲音:
 SingleContinuous
 SingleCadence
 DualContinuous
 DualCadence
 這些種類聲音的描述參見(jiàn)Playing Tones 部分。
   Freqencies(ToneFreq1,ToneFreq2)聲音的頻率在300Hz到2000Hz之間。
   Amplitudes(ToneAmp1,ToneAmp2)以分貝表示聲音的幅度,有效幅度范圍是:-40到2 dB。
   ToneOnTimeToneOnTime參數(shù)指定了播放步調(diào)聲音時(shí)的聲音時(shí)間長(zhǎng)度,以0.1秒為單位。
 ToneOffTime
 ToneOffTime Profile ID定義了播放步調(diào)聲音時(shí)靜音的時(shí)間長(zhǎng)度,以0.1秒為單位。
   ToneFreq1Var檢測(cè)頻率1時(shí)允許的誤差,以Hz為單位。 ToneFreq2Var
 檢測(cè)頻率2時(shí)允許的誤差,以Hz為單位。
   ToneOnTimeVar檢測(cè)步調(diào)音時(shí),"OnTime"所允許的誤差,以0.1秒為單位。
   ToneOffTimeVar檢測(cè)步調(diào)音時(shí),"OffTime"所允許的誤差,以0.1秒為單位。
 
   ToneRepetitions確定檢測(cè)出步調(diào)音要求的步調(diào)音的重復(fù)次數(shù)。
   ToneCharToneChar為聲音分配一個(gè)字符(從E到Z)。自定義聲音檢測(cè)前,必須為聲音分配一個(gè)字符。
   ToneIsBufferedToneIsBuffered是一個(gè)布爾值,指出CTADE_A是否將聲音字符放入數(shù)字緩沖,可以使用VOS函數(shù)MediaGetDigitBuffer來(lái)檢索。
   例:
 8. VOS 運(yùn)行日志
 VOS運(yùn)行時(shí)產(chǎn)生日志文件VOS1.log和VOS2.log。最新的日志總在VOS1.log文件中。這些文件的內(nèi)容如下:
 
 Start of run
 010518 172034.35 VOS loaded from C:\Program Files\Parity 
                                Software\Graphical
 VOS\Bin\Vos7d.dll
 010518 172034.35 VOS 7 (Debug) Built Apr 4 2001 
                                13:43:51
 
 End of run
 010518 172038.05 CASEST~1:062b[0] VOS 7 (Debug) 
                                Built Apr 4 2001 13:43:51
 010518 172038.05 CASEST~1:062b[0] Stopping: exit(21)
 
 Warnings, Failures, and Errors
 010518 172036.14 @W 713 RLL Adorll missing, wrong 
                                version or loaded in wrong order
 010518 172036.17 CASEST~1:149b[0] @F fil_open(LOGO,r): 
                                088 error 2
 010518 172037.91 CASEST~1:0606[0] @E CADOConn 
                                'Open' : Films : COM Error
 0x80004005(Unspecified error ) : _Connection::Open()
 010518 172037.91 CASEST~1:0606[0] Source = Microsoft 
                                OLE DB Provider for ODBC
 Drivers
 010518 172037.91 CASEST~1:0606[0] Description 
                                = [Microsoft][ODBC Microsft
 Access Driver] Could not find file '(unknown)'.
 Builtin function calls010518 172036.15 CASEST~1:004b[0] @B getpid() 
                                = 0
 Driver / API010727 164728.19 @D ATDX_TERMMSK(1[dxxxB1C1])=0x0
 010727 164728.19 @D Dev 1 dxxxB1C1 Evt 0x86 Data 
                                0x15b9350 CST Data 0x0 Rings received
 010727 164728.19 @D ATDX_TERMMSK(1[dxxxB1C1])=0x0
 Topaz Events / States010727 164728.19 CASEST~2:0017[1] @Y Trunk:0 Event 
                                dxxxB1C1[1] 134 CST Data 0x0 Rings
 received
 010727 164728.19 CASEST~2:0017[1] @Z Trunk:0 Idle->InboundRinging 
                                (1)
 010727 164728.19 ResumeTask(1, 1)
 010727 164728.27 CASEST~2:001f[1] @D dx_sethook(1[dxxxB1C1], 
                                1, EV_ASYNC)=0
 010727 164728.27 CASEST~2:001f[1] @B TrunkAnswerCall() 
                                = 1
 [ 全文英文版 ]
        |