6. VOS語言
6.25. 圖形化VOS,運(yùn)行程序
菜單選項(xiàng)"Run"包括編譯和運(yùn)行VOS程序所需的所有選項(xiàng),編譯過程就是VOS檢測并把VOS代碼轉(zhuǎn)換為p-code。VOS編譯項(xiàng)目中的每一個(gè)應(yīng)用程序。編譯程序?yàn)椋篤LC8.exe1。
編譯過程中,有一個(gè)狀態(tài)窗口顯示編譯狀態(tài),編譯和連接過程中產(chǎn)生的錯(cuò)誤和警告:
程序編譯完成后(無錯(cuò)誤),就可以運(yùn)行了。
運(yùn)行過程中,VOS調(diào)用VOS.exe程序,VOS.exe解釋執(zhí)行編譯后的VOS代碼,可以通過F5鍵或者按鈕 來實(shí)現(xiàn)。
VOS運(yùn)行有許多設(shè)置:
6.25.1. 用戶界面,-設(shè)置
VOS啟動(dòng)時(shí),用戶界面是一個(gè)稱為VOS控制面板(VOS Control Panel)的對話框。VOS對話框如下所示:
任務(wù)欄中有一個(gè)當(dāng)前file.VOS的索引。
編譯(vlc)和運(yùn)行(vos)的設(shè)置通過兩個(gè)文件完成:VOS.ini和擴(kuò)展名為.VOS的文件。
6.25.1.1. configurationfile.VOS 文件
從版本7(version 7)開始,VOS和VLC的設(shè)置就固定在兩個(gè)文件中:VOS.INI和稱為VOS設(shè)置文件的一種新文件,其擴(kuò)展名為.vos。
設(shè)置文件與INI文件非常相象,VOS.INI文件應(yīng)用于VOS運(yùn)行引擎的每一個(gè)時(shí)間例程,而對于每一個(gè)VOS項(xiàng)目都可以有一個(gè)不同的設(shè)置文件。運(yùn)行一個(gè)VOS程序時(shí),可以指定使用某一個(gè)設(shè)置文件。如果沒有指定設(shè)置文件,VOS使用VOS.INI文件中[Setings]部分指定的缺省設(shè)置。此設(shè)置文件可以移出Windows目錄,也允許任意改變文件名,可以很容易在運(yùn)行在不同的系統(tǒng)中。
VOS設(shè)置文件格式基于Widows的INI文件格式,并且VOS使用Windwos API函數(shù)來管理INI文件,所有指定段落名,關(guān)鍵詞、值和注釋的用法都相同。
文件可以在三個(gè)地方編輯
·使用圖形化的VOS(Graphical VOS)->Project->VOS Settings。
·使用VOS控制面板,單擊右鍵。
·直接使用記事本(NotePad)編輯VOS.ini文件。
設(shè)置文件中的節(jié)(Sections)包括:
[AutoStart]
VOS設(shè)置文件的[AutoStart]部分指定.vx文件,最多指定16個(gè),當(dāng)VOS使用此設(shè)置文件時(shí),都要載入這些.vx文件。例如:
[Buf]
VOS設(shè)置文件的[Buf]部分指定使用緩沖區(qū)的函數(shù)可以使用的緩沖區(qū)的數(shù)目。
例:
VOS設(shè)置文件的[Colors]部分保存16種自定義顏色,用來設(shè)置VOS控制面板。
條目 含義
Custom0 自定義顏色 0.
Custom1 自定義顏色 1.
Custom2 自定義顏色 2.
Custom3 自定義顏色 3.
Custom4 自定義顏色 4.
Custom5 自定義顏色 5.
Custom6 自定義顏色 6.
Custom7 自定義顏色 7.
Custom8 自定義顏色 8.
Custom9 自定義顏色 9.
Custom10 自定義顏色 10.
Custom11 自定義顏色 11.
Custom12 自定義顏色 12.
Custom13 自定義顏色 13.
Custom14 自定義顏色 14.
Custom15 自定義顏色 15.
自定義顏色的格式使用Win32RGB的十六進(jìn)制值。
[Consts]
VOS設(shè)置文件的[Consts]部分指定VLC開始運(yùn)行時(shí)聲明的常量。
[DateTime]
VOS 設(shè)置文件的[DateTime]部分可以使用戶覆蓋(override)VOS的時(shí)間設(shè)置。
|
條目 |
含義 |
|
DST |
設(shè)置為0表示使用標(biāo)準(zhǔn)的時(shí)間,設(shè)置值大于0表示使用夏令時(shí)。如果設(shè)置值小于0,對于給定的日期,VOS計(jì)算決定使用標(biāo)準(zhǔn)時(shí)間或者daylight
savings時(shí)間。 |
[DBF]
VOS設(shè)置文件的[DBF]部分設(shè)置使用DBF數(shù)據(jù)庫的VOS參數(shù)。
|
條目 |
含義 |
|
AllowUnsafe2 |
是否允許使用不安全的db_fput調(diào)用?1:可以使用,0:不可以使用。 |
|
MaxBases |
最大的活動(dòng)數(shù)據(jù)庫數(shù)目 |
|
MaxBaseHandles |
最大數(shù)據(jù)庫句柄(描述符)數(shù)目 |
|
MaxFields |
一個(gè)數(shù)據(jù)庫的最大字段數(shù) |
|
MaxRecHandles |
最大記錄句柄(描述符)數(shù)目 |
|
MaxRecBytes |
記錄的最大長度,必須大于數(shù)據(jù)庫中的記錄長度,使用dmpdbf.exe函數(shù)檢查數(shù)據(jù)庫記錄長度 |
|
MaxRecs |
最大的活動(dòng)記錄數(shù)。 |
[Exceptions]
VOS設(shè)置文件的[Exceptions]部分設(shè)置異常處理。
|
條目 |
含義 |
|
Handler |
Handler的值可以為1或2,如果為1表示VOS不作任何異常處理或記錄日志。如果Handler值為2表示VOS進(jìn)行異常處理(在EXCEPT.RPT文件中記錄異常日志),并且在ERRORLEVEL為3的情況下立即退出程序,可以在批處理中使用。
缺省的異常處理是在EXCEPT.RPT文件中記錄異常日志,并且控制權(quán)交于下一個(gè)異常處理器,下一個(gè)異常處理器一般情況下為Dr.Watson或者Visual
C++調(diào)試器。 |
[File]
VOS設(shè)置文件的[File]部分用來設(shè)置DBF數(shù)據(jù)庫文件的文件和記錄鎖定參數(shù)。
|
條目 |
含義 |
|
MaxLocks |
文件鎖的最大數(shù)目 |
[FunFileDirs]
VOS文件中的[FunFileDirs]部分用來設(shè)定最多8個(gè)目錄,VLC應(yīng)該從這8個(gè)目錄中尋找函數(shù)文件。
|
條目 |
含義 |
|
Dir1 |
第1個(gè)函數(shù)文件目錄 |
|
Dir2 |
第2個(gè)函數(shù)文件目錄 |
|
… |
|
|
Dir8 |
第8個(gè)函數(shù)文件目錄 |
VLC檢查是從Dir1到Dir8進(jìn)行的,例如,Dir1中的函數(shù)文件比Dir2中的函數(shù)文件優(yōu)先級高。這一點(diǎn)非常重要,尤其在不同的指定目錄中有兩文件同名的情況下,例如有兩個(gè)文件名字都為myfunc.fun,一個(gè)在C:\functions目錄中,另一個(gè)在D:\functions中。如果項(xiàng)目的設(shè)置文件如下所示:
編譯程序時(shí),VOS使用D:\functions目錄中的函數(shù)。
[Glb]
VOS設(shè)置文件的[Glb]部分設(shè)定編號的全局變量的參數(shù)。
以下的條目不影響命名的全局變量。
|
條目 |
含義 |
|
Count |
允許的編號的全局變量的最大數(shù)目 |
|
VarBytes |
編號的全局變量的最大長度,以字節(jié)為單位 |
[GUI]
VOS設(shè)置文件的[GUI]部分控制VOS用戶接口的外觀,可以通過VOS控制面板中的用戶接口對話框來設(shè)定。
|
條目 |
含義 |
|
AboutBoxText |
VOS"關(guān)于"對話框中顯示的字符串 |
|
CtlPanelTitle |
設(shè)定控制面板的標(biāo)題 |
|
ConfirmStop |
停止VOS時(shí)是否要有一個(gè)確認(rèn)對話框?設(shè)置為1時(shí),會出現(xiàn)確認(rèn)對話框,設(shè)置為0時(shí),不需確認(rèn),VOS直接終止。 |
|
ShowCtlPanel |
VOS運(yùn)行時(shí)是否顯示控制面板?設(shè)置為1時(shí),顯示控制面板,設(shè)置為0時(shí),隱藏控制面板。 |
|
StopIfNoTasks |
如果沒有任務(wù)運(yùn)行時(shí),VOS是否應(yīng)該停止?如果設(shè)為1,VOS就會停止,如果設(shè)置為0,VOS繼續(xù)運(yùn)行。 |
[IncludeFileDirs]
VOS設(shè)置文件的[IncludeFileDirs]部分設(shè)置最多8個(gè)包含文件所在的目錄,VLC在這些目錄中尋找包含文件。
|
條目 |
含義 |
|
Dir1 |
第1個(gè)包含文件的目錄 |
|
Dir2 |
第2個(gè)包含文件的目錄 |
|
… |
|
|
Dir8 |
第8個(gè)包含文件的目錄 |
|
|
|
VLC檢查是從Dir1到Dir8進(jìn)行的。例如,Dir1中的函數(shù)文件比Dir2中的函數(shù)文件優(yōu)先級高這一點(diǎn)非常重要,尤其在不同的指定目錄中有兩文件同名的情況下,例如有兩個(gè)文件名字都為project.inc,一個(gè)在C:\include
directory目錄中,另一個(gè)在D:\include directory中。如果項(xiàng)目的設(shè)置文件如下所示:
程序編譯后,VOS將使用D:\include directory目錄中的文件。
[Load]
VOS設(shè)置文件的[Load]部分設(shè)定缺省狀態(tài)下VOS載入的DLL,
調(diào)試和非調(diào)試DLL文件的名字和路徑名在VOS.INI文件中的[DLLs]部分設(shè)定。
|
條目 |
含義 |
|
DebugDLL |
VOS缺省狀態(tài)下是否載入調(diào)試DLL(即調(diào)試模式下開始)?如果設(shè)為1,則缺省為調(diào)試模式,如果設(shè)為0,則缺省為非調(diào)試模式。 |
[Log]
VOS設(shè)定文件的[Log]部分設(shè)定VOS日志文件的參數(shù)。
|
條目 |
含義 |
|
Append |
是否將一條新的日志附在一個(gè)存在的日志后?如果設(shè)為1,則VOS運(yùn)行時(shí),將新的日志添加在舊的日志文件后,如果設(shè)為0,則VOS開始運(yùn)行時(shí),將覆蓋所有舊的日志。 |
|
Buffer |
布爾值,設(shè)置為1是允許緩沖,設(shè)置為0是不允許緩沖。如果允許緩沖,VOS在內(nèi)存中保留多于1行的日志,往日志文件中一次寫入一組日志。如果不允許緩沖,VOS不在內(nèi)存中保留,一次往日志文件中寫入1行日志。 |
|
Commit |
布爾值,如果設(shè)為1,每向日志文件寫入一行時(shí),都要將日志文件寫入磁盤(此操作相當(dāng)于Windows是否緩沖)。如果Commit=1時(shí),只有Windows終止一個(gè)進(jìn)程時(shí)才向硬盤寫入日志文件。通常情況下不需要這樣,因?yàn)榧词挂粋(gè)進(jìn)程終止時(shí),Windows會把緩沖區(qū)的所有字節(jié)寫入文件,這種操作會很慢,所以如果真正需要,設(shè)為1。 |
|
Dir |
日志文件vos?.log所存儲的目錄 |
|
MaxSizeKb |
VOS日志的最大長度 |
[Msg]
VOS 設(shè)置文件的[Msg]部分設(shè)定消息函數(shù)參數(shù)。
|
條目 |
含義 |
|
MaxCount |
消息的最大數(shù)目 |
|
MaxChars |
消息的最大字符數(shù),加上一個(gè)終止符字節(jié) |
|
Msg_IntervalMs |
|
[NTX]
VOS設(shè)置文件的[NTX]部分設(shè)定DBF數(shù)據(jù)庫索引參數(shù)。
|
條目 |
含義 |
|
Buffers |
每個(gè)索引的緩沖:參見設(shè)定文件索引要求。 |
|
Clipper |
NTX:0=older VOS 1=自由排列 2=關(guān)鍵詞排序 3=both |
|
MaxKey |
索引字段最大長度:參見文件索引要求。 |
|
MaxOpen |
索引文件最大數(shù)目:參見文件索引要求。 |
|
PageErrFatal |
一個(gè)頁面錯(cuò)誤是否關(guān)鍵?設(shè)為1表示頁面錯(cuò)誤關(guān)鍵,設(shè)為0表示頁面錯(cuò)誤不關(guān)鍵。 |
[Pio]
VOS設(shè)置文件中的[Prio]部分可以設(shè)定VOS進(jìn)程、基本線程、GUI線程在Windows中的優(yōu)先級。Windows優(yōu)先級在MSDN庫中詳細(xì)解釋,參見MSDN庫中的SetThreadPriority和SetThreadPriorityBoost
Win32 API函數(shù)。
VOS開始時(shí),調(diào)用SetThreadPriority和SetThreadPriorityBoost Win32
API函數(shù)(使用VOS設(shè)置文件本部分設(shè)定值)。通過控制面板的優(yōu)先級設(shè)定對話框改變設(shè)置時(shí),也要調(diào)用上述2個(gè)API函數(shù),不需要重啟動(dòng)VOS來改變屬性。
|
條目 |
含義 |
|
GuiBoost |
是否允許提高VOS GUI線程的優(yōu)先級,如果設(shè)為1,允許,設(shè)為0,不允許。 |
|
GuiThread |
設(shè)定VOS GUI線程的優(yōu)先級。線程優(yōu)先級和有效優(yōu)先級的值參見MSDN庫SetThreadPriority(Win32API函數(shù))。 |
|
PrimaryBoost |
是否允許提高VOS基本線程的優(yōu)先級,1表示允許,0表示不允許。關(guān)于提高優(yōu)先級的解釋參見MSDN
庫 SetThreadPriorityBoost(一個(gè)Win32 API函數(shù))。 |
|
PrimaryThread |
設(shè)置VOS基本線程的優(yōu)先級。線程優(yōu)先級和有效優(yōu)先級的值參見MSDN庫SetThreadPriority(Win32API函數(shù))。 |
|
ProcessClass |
設(shè)置VOS例程類的優(yōu)先級。線程優(yōu)先級和有效優(yōu)先級的值參見MSDN庫SetThreadPriority(Win32API函數(shù))。 |
[R4]
VOS設(shè)置文件的[R4]部分設(shè)定傳統(tǒng)(legacy)VOS函數(shù)的參數(shù),如sc_,DTI_函數(shù)等等。
如果應(yīng)用程序中沒有使用這些函數(shù),設(shè)置文件中刪去此節(jié)。
|
條目 |
含義 |
|
Enable |
VOS是否載入R4驅(qū)動(dòng)?1表示載入,0表示不載入。 |
|
fxSendFiles |
單個(gè)FaxSend發(fā)送的傳真文件的最大數(shù)目。 |
|
gcIEBytes |
ISDN信息元素中字節(jié)的最大數(shù)目。 |
|
scEnablePCPA |
系統(tǒng)是否使用Perfect CPA?1表示使用,0表示不使用。 |
|
scNshgup |
是否把連續(xù)音視為掛機(jī)?1表示是,0表示否。 |
|
scPhraseWords |
短語中最多單詞數(shù),必須大于0 |
[RLLs]
VOS設(shè)置文件[RLLs]部分設(shè)定VOS或VLC運(yùn)行時(shí)載入那些RLL。
|
條目 |
含義 |
|
RLL1 |
第1個(gè)RLL路徑名 |
|
RLL2 |
第2個(gè)RLL路徑名 |
|
… |
|
|
RLL8 |
第8個(gè)RLL路徑名 |
[SearchPaths]
VOS設(shè)置文件中的[SearchPaths]部分設(shè)定查詢IPF、Par文件和VX文件的路徑。
如果一條SearPaths要列出多個(gè)路徑,各路徑用分號隔開:
[SearchPaths]
IPF=.;.\IPF;c:\Projects\IPFs;
|
條目 |
含義 |
|
IPF |
設(shè)定查詢索引的提示語文件的路徑 |
|
Par |
設(shè)定查詢PAR文件的路徑 |
|
VX |
設(shè)定VOS命令行下或chain、spawn下查詢.vx文件的路徑。 |
[Sem]
VOS設(shè)置文件的[Sem]部分設(shè)定信號量(Semaphore)參數(shù)。
|
條目 |
含義 |
|
Count |
編號的信號量(Semaphore)的最大數(shù)量 |
[Ser]
VOS設(shè)置文件的[Ser]部分設(shè)定串口的參數(shù)。
|
條目 |
含義 |
|
BuffKb |
串口緩沖區(qū)大小,以字節(jié)為單位 |
|
Ports |
支持的串口數(shù)目 |
|
Ser_IntervalMs
|
輪循串口的間隔,毫秒為單位,缺省為50 |
[SRL]
VOS設(shè)置文件的[SRL]部分設(shè)定標(biāo)準(zhǔn)運(yùn)行庫(SRL)事件的參數(shù)。
|
條目 |
含義 |
|
Srl_IntervalMs
|
輪循DialogicSRL事件的間隔,毫秒為單位,缺省為25。 |
[Task]
VOS設(shè)置文件[Task]部分設(shè)定任務(wù)管理參數(shù)
|
條目 |
含義 |
|
MaxCount |
任務(wù)的最大數(shù)目 |
|
MaxName |
VOS任務(wù)名的最大長度 |
[Trace]
VOS設(shè)置文件[Trace]部分設(shè)定跟蹤選項(xiàng)
|
條目 |
含義 |
|
ActiveX |
VOS是否應(yīng)進(jìn)入對象跟蹤(只在調(diào)試模式下使用)?設(shè)為1表示跟蹤,設(shè)為0表示不跟蹤。 |
|
Builtins |
VOS是否應(yīng)跟蹤所有的內(nèi)置函數(shù)?設(shè)為1表示跟蹤,0表示不跟蹤。 |
|
Drivers |
跟蹤API函數(shù)調(diào)用 |
|
InOut |
調(diào)用函數(shù)前后都要跟蹤。當(dāng)函數(shù)調(diào)用使VOS崩潰時(shí)有用,正常情況下函數(shù)調(diào)用在返回后寫入日志,但如果函數(shù)崩潰,在日志中不會記錄。 |
|
Layer |
為傳統(tǒng)函數(shù)sc_、DTI_等創(chuàng)建DOS到Windows轉(zhuǎn)換層的日志。 |
|
OutputToVosBox |
跟蹤信息是否既顯示在VOS對話框中,又記錄在日志文件中?1表示既顯示跟蹤信息,又記錄在日志文件中,0表示只記錄在日志文件中。 |
|
Override |
單個(gè)程序中,是否用此設(shè)置文件中的條目替換trace()函數(shù)設(shè)定的跟蹤選項(xiàng)?設(shè)為1表示替換,設(shè)為0表示使用程序的設(shè)定。 |
|
Pcode |
VOS是否跟蹤所有的p-code指令?設(shè)為1表示跟蹤,設(shè)為0表示禁止p-code跟蹤。(p-code跟蹤會產(chǎn)生大量的日志數(shù)據(jù))。 |
|
RLLs |
VOS是否跟蹤所有的RLL調(diào)用?設(shè)為1表示跟蹤,設(shè)為0表示禁止RLL跟蹤。 |
|
Stack |
VOS進(jìn)行p-code跟蹤時(shí)是否包含堆棧?設(shè)為1表示包含堆棧,設(shè)為0表示忽略堆棧。 |
|
Structs |
VOS是否跟蹤API結(jié)構(gòu)的成員?設(shè)為1表示跟蹤,設(shè)為0忽略結(jié)構(gòu)。 |
|
Vars |
VOS跟蹤p-code時(shí)是否包含變量?設(shè)為1表示包含,設(shè)為0表示忽略變量。 |
[TrayIcon]
VOS設(shè)置文件中的[TrayIcon]部分設(shè)定當(dāng)VOS運(yùn)行時(shí)系統(tǒng)圖標(biāo)。從VOS控制面板中的用戶接口對話框中可以找到這些條目。
|
條目 |
含義 |
|
Animate |
圖標(biāo)是否為動(dòng)畫?設(shè)為1表示運(yùn)行動(dòng)畫,設(shè)為0表示禁止動(dòng)畫。 |
|
HWND |
VOS內(nèi)部使用。 |
|
Show |
VOS運(yùn)行時(shí)是否顯示系統(tǒng)圖標(biāo)?設(shè)為1表示顯示,設(shè)為0表示隱藏。 |
|
Tooltip |
設(shè)定系統(tǒng)圖標(biāo)的提示語,用戶圖標(biāo)停在系統(tǒng)圖標(biāo)上時(shí),顯示提示語。 |
[VLC]
VOS設(shè)置文件的[VLC]部分設(shè)置VOS語言編譯選項(xiàng)。
|
條目 |
含義 |
|
GenerateDebugSymbols
|
VLC是否產(chǎn)生調(diào)試符號?設(shè)為1表示產(chǎn)生,設(shè)為0表示不產(chǎn)生,缺省狀態(tài)下為產(chǎn)生調(diào)試符號。 |
|
GenerateLineMarks |
VLC是否產(chǎn)生行標(biāo)記?設(shè)為1表示產(chǎn)生,設(shè)為0表示不產(chǎn)生,缺省狀態(tài)下為產(chǎn)生行標(biāo)記。 |
|
ListFileName |
指定創(chuàng)建的列表的文件名,如果此項(xiàng)沒有指定,則不創(chuàng)建列表文件。 |
|
ReportUnusedVariables |
設(shè)為1表示報(bào)告未用的變量,設(shè)為0表示不報(bào)告未用的變量,缺省為不報(bào)告。 |
|
LongFileNameSupport |
VLS查找函數(shù)文件時(shí)是否使用長文件名?如果設(shè)為1,VLC使用完整的函數(shù)名作為長文件名,如果沒有找到,報(bào)告錯(cuò)誤。例如,如果一個(gè)函數(shù)名為MyFunction(),VLC查找MyFunction.Fun文件。如果設(shè)為2,VLC使用完整的函數(shù)名作為長文件名,如果沒有找到,把函數(shù)名截短為8字符,繼續(xù)尋找相應(yīng)的.Fun文件,如果沒有找到,報(bào)告錯(cuò)誤。例如,如果一個(gè)函數(shù)為MyFunction(),VLC查詢文件MyFunction.Fun。如果VLC沒有找到,繼續(xù)尋找MyFuncti.Fun。如果設(shè)為3,VLC截短函數(shù)名,只尋找截短函數(shù)名的文件。例如,如果尋找MyFunction(),VLC只尋找MyFuncti.Fun。缺省狀態(tài)下,支持長文件名。 |
|
StackDepth |
設(shè)置堆棧深度。 |
|
StackSize |
設(shè)置堆棧的大小,以字節(jié)為單位,缺省為2048。 |
|
Verbose |
顯示編譯過程,數(shù)值從0到9來顯示進(jìn)行的細(xì)節(jié)。 |
[VLs]
VOS設(shè)置文件中[VLs]部分指定VOS或VLC運(yùn)行時(shí)載入的VL文件,一個(gè)Vlc庫文件是一組函數(shù)文件的集合,Vlc庫文件的擴(kuò)展名為.VL。
[VosBox]
"VOS Box"窗口是一個(gè)模擬MS-DOS PC的25x80字符的窗口,此窗口是為了與DOS版本的VOS后向兼容。
VOS設(shè)置文件的[VosBox]設(shè)定VOX Box的選項(xiàng),也可以從VOS控制面板的用戶接口對話框來設(shè)置。
|
條目 |
含義 |
|
BkBlue |
背景顏色中藍(lán)色的密度(0到255) |
|
BkGreen |
背景顏色中綠色的密度(0到255) |
|
BkRed |
背景顏色中紅色的密度(0到255) |
|
EnableCtrlBreak
|
是否支持按Ctrl+Break來停止VOS?設(shè)為1表示支持,設(shè)為0表示不支持,缺省為不支持Ctrl+Break停止VOS。 |
|
Font |
用來選擇屏幕顯示的字體,對于顯示國家字符是必需的。 |
|
FontBlue |
文本字體顏色中藍(lán)色的密度(0到255) |
|
FontGreen |
文本字體顏色中綠色的密度(0到255) |
|
FontItalic |
字體是否為斜體?設(shè)為1表示是斜體,0表示正常。 |
|
FontRed |
文本字體顏色中紅色色的密度(0到255) |
|
FontSize |
設(shè)定屏幕顯示字體的大小,以點(diǎn)為單位 |
|
FontWeight |
字體粗細(xì)度(有效值參見Win32 CreatFont函數(shù)) |
|
Show |
VOS運(yùn)行時(shí)是否顯示VOS Box?設(shè)為1表示顯示,設(shè)為0表示不顯示。 |
|
ShowTime |
VOS Box是否顯示當(dāng)前時(shí)間?設(shè)為1表示顯示,設(shè)為0表示不顯示。 |
|
Title |
此字符串為VOS Box的標(biāo)題,如果沒有設(shè)置標(biāo)題,VOS使用缺省的標(biāo)題"VOS
Box"。 |
6.25.1.2. VOS.INI文件
VOS.INI文件保存影響VOS的設(shè)置,設(shè)置如下:
[Settings]
VOS.INI文件中[Settings]指定為缺省設(shè)置文件:
[DLLs]
VOS.INI文件中[DLLs]指出調(diào)試和非調(diào)試 VOS DLL的位置:
[Service]
VOS.INI文件中[Service]指定業(yè)務(wù)相關(guān)性和VOS作為WindowsNT/2000業(yè)務(wù)運(yùn)行時(shí)所需的其他設(shè)置:
7. CT ADE 體系結(jié)構(gòu)(Topaz),介紹
第一個(gè)問題:什么是 CT ADE體系結(jié)構(gòu)(TOPAZ)?
回答這個(gè)問題之前,首先回顧一下CTI應(yīng)用所提出的問題。
開發(fā)電話應(yīng)用程序時(shí)必須清楚:電話線的類型、電路板的類型和相關(guān)的不同的API。有3種接口:
·模擬
·數(shù)字(R2,ISDN,SS7等等)
·IP(Voice over IP)
比如,如果需要為每種接口開發(fā)和維護(hù)相同的應(yīng)用,應(yīng)該開發(fā)3種不同的程序:模擬版本、數(shù)字版本和IP版本。另外,這些應(yīng)用程序直接依賴于電路板API。而且,如果要把應(yīng)用程序應(yīng)用到CT
媒體上,就必須重新從開始開發(fā)整個(gè)程序。
CTADE_A具有很多的好處,隨 CTADE_A帶有可以一組簡單的命令,這允許我們?yōu)椴煌愋偷闹欣^和API只開發(fā)一套應(yīng)用程序就可以了。這種概念稱為API透明性。
CTADE_A怎樣實(shí)現(xiàn)透明?
下面圖表顯示了在系統(tǒng)中TOPAZ處在何處,它是怎樣分開應(yīng)用程序和API的。
從上圖中可以看出,TOPAZ處于API和應(yīng)用程序之間。TOPAZ檢測API函數(shù)和安裝的板卡(使用Topaz Profile,以后介紹)。
TOPAZ是面向資源的,它直接處理系統(tǒng)中的電話資源。
這就是我們所謂的面向系統(tǒng)資源。什么是資源?
資源是指可以共享和使用的一個(gè)和一組元素,其中每一個(gè)元素都代表實(shí)體元素。首先要定義資源的類型。VOS中有下列資源:
·中繼資源:線路接口資源
·媒體資源:播放、錄音、產(chǎn)生和檢測各種聲音的資源。
·傳真資源:發(fā)送和接收傳真的資源
·語音識別資源:語音識別資源
·文本到語音轉(zhuǎn)換資源:文本到語音轉(zhuǎn)換資源
·會議資源:協(xié)商安排和控制資源
由下面的VOS代碼可以看出,關(guān)于資源的函數(shù)名總是以相應(yīng)資源的名稱開始:
7.1. 圖形化VOS,CT ADE 體系結(jié)構(gòu)(Unleashed)
我們已經(jīng)知道了怎樣創(chuàng)建一個(gè)項(xiàng)目和怎樣向一個(gè)項(xiàng)目加入必須的文件,另外,我們已經(jīng)知道了怎樣設(shè)置一個(gè)VOS項(xiàng)目。
下面介紹CTADE_A和VOS語言,我們已經(jīng)知道,CTADE_A是一組軟件模塊,用來銜接CTADE_A命令(MediaPlayFile、MediaRecofd等等)和安裝的CTI
API。
CTADE_A是面向資源的。從前面的介紹可以得知,有許多種資源(中繼、媒體、傳真、ASR、TTS、會議(Conference))等等,Dialogic板卡上的這些資源使用不同的技術(shù)。
這些資源中每一種資源都包含許多內(nèi)部狀態(tài),這些狀態(tài)的轉(zhuǎn)換都與資源短語(resource live phases)有關(guān)。關(guān)于這些狀態(tài),請參見Graphical
VOS User's Guide en la sección CTADE_A->Resource Stats.。
7.1.1. CTADE_A,資源和資源索引號碼
許多VOS函數(shù)控制CTADE_A資源,例如,函數(shù)MediaPlayFile在當(dāng)前的媒體資源上播放一個(gè)聲音文件,F(xiàn)在,我們介紹資源的概念并且討論資源編號方式是怎樣工作的。
資源就是呼叫處理系統(tǒng)的一個(gè)組成部分。在大多情況下,單個(gè)資源在一條電話線或一個(gè)數(shù)字中繼上播放單個(gè)語音流。
每一資源由資源索引號碼來區(qū)分,通常不需要考慮資源索引號碼,因?yàn)楫?dāng)應(yīng)用程序需要資源時(shí),VOS負(fù)責(zé)這些資源的預(yù)留和路由。但如果要控制應(yīng)用程序使用資源的方式,就需要靠資源索引號碼來指定資源。每種資源的索引號碼都從0開始且獨(dú)立編碼:一個(gè)VOS任務(wù)能夠很方便的使用中繼資源1和媒體資源4。
另外,可以通過多個(gè)函數(shù)來得到資源索引的資源:
。璕esourceTypeGetIndex,返回當(dāng)前資源的索引號,如:MediaGetIndex, TrunkGetIndex
。璕esourceTypeGetCount,返回資源的總數(shù),如:MediaGetCount, TrunkGetCount。
7.1.2. CTADE_A 函數(shù)概述
CTADE_A中,所有的函數(shù)有資源分組,CTADE_A的每一種資源根據(jù)不同的特征形成一組函數(shù)。通常情況下,系統(tǒng)中的所有資源都有一個(gè)號碼,我們可以通過索引來操作每一種資源。有兩種資源來請求資源:自動(dòng)和手動(dòng)。例子:
7.1.2.1. CTADE_A函數(shù),異步模式。
缺省狀態(tài)下,VOS一直在等待,直到所有的CTADE_A函數(shù)執(zhí)行結(jié)束(同步模式),例:
缺省狀態(tài)下,MediaPlayFile在vox文件播放完畢或者其他終止條件(DTMF,靜音等等)下退出執(zhí)行。
但是,在許多情況下,需要調(diào)用函數(shù)的同時(shí)繼續(xù)執(zhí)行程序(異步模式),例:
假設(shè)函數(shù)CheckBalance要運(yùn)行1到10秒(決定于數(shù)據(jù)庫服務(wù)器的忙閑程度),最差情況下,呼入的用戶需要在第一次播放和balance的結(jié)果之間等待10秒。
異步執(zhí)行通過使用函數(shù)MediaEnableAsync()可以避免這些問題,如下:
7.1.2.2. CTADE_A函數(shù),中繼資源和函數(shù)
中繼函數(shù)是用來管理系統(tǒng)中的中繼資源,目的是做以下事情:
·進(jìn)行呼出
·呼叫過程分析
·應(yīng)答或拒接一個(gè)呼入呼叫
·獲得呼叫信息(ANI,DNIS,呼叫者姓名,等等)
·掛斷電話
可以看出,中繼資源負(fù)責(zé)所有的呼叫控制,一個(gè)中繼資源處理單個(gè)語音流,所以下列都可以看作是一個(gè)中繼資源
·單個(gè)模擬線的中繼接口
·E1/T1的一個(gè)時(shí)隙
·一個(gè)MSI站(An MSI Station)
·SimPhone模擬中繼線(索引號總為0)
控制中繼資源的函數(shù):
7.1.2.3. CTADE_A函數(shù),媒體資源與函數(shù)
媒體資源控制播放、錄制語音文件和各種提示音,并且從呼叫方接收DTMF位。
·向呼叫方播放語音文件和提示語。
·播放可變信息:"你地余額為300.17元"。
·錄制語音文件,提示怎樣將呼叫方的語音錄制成語音文件。
·使用停止播放來表示摘機(jī)音,當(dāng)呼叫方撥號時(shí),停止播放或錄音。
·從呼叫方接收描述檢索摘機(jī)音的數(shù)目。
·向呼叫方展示怎樣播放普通的提示音。
控制媒體資源的函數(shù)如下:
7.1.2.4 CTADE_A 函數(shù),傳真資源和函數(shù)
傳真資源控制傳真數(shù)據(jù)的傳送與處理。Dialogic VFZ板上或GammaLink CP板上的一個(gè)單個(gè)的傳真通道為一個(gè)傳真資源。
必須注意傳真資源只能收發(fā)傳真數(shù)據(jù),所有其他需要呼出或呼入電話的操作應(yīng)由中繼資源或媒體資源完成。
傳真資源由傳真函數(shù)管理,
·發(fā)傳真
·收傳真
·輪循傳送或逆向傳送
7.1.2.5. CTADE_A函數(shù),會議(Conference)函數(shù)
會議資源用來創(chuàng)建和管理會議。
會議函數(shù)完成下列功能:
·創(chuàng)建會議
·從一會議中刪去某與會方
·刪除會議
多會議函數(shù)如下:
7.1.2.6. CTADE_A 函數(shù),語音識別函數(shù)
語音識別資源把呼叫者的語音轉(zhuǎn)變?yōu)槲谋咀址R粋(gè)VR資源可以對一個(gè)語音流數(shù)據(jù)(來自一中繼或會議資源)進(jìn)行識別。
可以通過VrGetCount函數(shù)來查找系統(tǒng)中VR資源的數(shù)目。
注:系統(tǒng)中CTADE_A為每一媒體資源創(chuàng)建一語音識別資源,由于語音引擎的限制,可能不能同時(shí)使用VR資源。
[ 全文英文版 ]
|