?? tw8adll.txt
字號(hào):
(R) D&E TurboWay (TM) TW8A 系列電話卡
32位編程接口(TW8A.DLL)使用說明
(適用于 Win95 )
包含文件
========
TW8A32.PAS 編程接口Delphi4.0聲明文件
TW8A32.BAS 編程接口VB5.0聲明文件
TW8A32.PRG 編程接口VisualFoxpro5.0聲明文件
TW8ADLL.TXT 本文件
TW8ADPH4.ZIP Delphi 4.0 編程范例
TW8APB6.ZIP PowerBuilder 6.0 編程范例
TW8AVB5.ZIP Visual Basic 5.0 編程范例
TW8AVC5.ZIP Visual C++ 5.0 編程范例
TW8AVFP5.ZIP Visual Foxpro 5.0 編程范例
在Win95操作系統(tǒng)中,各種編程語言都可使用動(dòng)態(tài)連接庫中的函數(shù),因此TW8A卡的32位驅(qū)動(dòng)程序只提供
一個(gè)動(dòng)態(tài)連接庫作為編程接口,并根據(jù)各中語言使用動(dòng)態(tài)連接庫方法提供相應(yīng)的動(dòng)態(tài)庫聲明文件以
供使用.
使用方法
========
1. VC5.0
在調(diào)用接口函數(shù)的源程序中包含頭文件TW8A.H
將輸入庫TW8A.LIB連接至工程中
2. BC5.0
用Borland C++5.0的implib.exe 生成動(dòng)態(tài)連接庫TW8A.DLL的輸入庫TW8A.LIB,方法如下:
implib tw8a.lib tw8a.dll
在調(diào)用接口函數(shù)的源程序中包含頭文件TW8A.H
將輸入庫TW8A.LIB連接至工程中
3. Delphi4.0
通過在單元文件中加入語句
uses tw8a32
將TW8A32.PAS連接到單元文件中之后即可使用其中的常量及函數(shù)過程
4. VB5.0
通過菜單'Project\Add Modul'將TW8A32.BAS連接到工程文件中,之后
即可使用其中的常量及函數(shù)過程.
5. VisualFoxpro5.0
在使用此接口中的函數(shù)之前, 用戶在FoxPro 語言源代碼中應(yīng)先裝入
電話卡接口函數(shù):
SET PROCEDURE TO TW8A32.PRG ADDITIVE
=TW_LoadAPI()
之后,在FoxPro 語言源代碼中才可以使用接口庫文件所提供的函數(shù).
6. PowerBuilder 6.0
由于PowerBuider6.0將所有的源代碼都保存在.pbl文件中,因此每次建立新應(yīng)用時(shí),
都必須手動(dòng)一步一步地將與動(dòng)態(tài)庫的聲明相關(guān)的代碼添加到.pbl文件中.添加動(dòng)態(tài)庫
聲明的一般步驟如下:
(1) 首先建立一個(gè)應(yīng)用,并將其存入.pbl文件中.
(2) 定義動(dòng)態(tài)庫中使用到的結(jié)構(gòu),其操作方法如下:
1) 點(diǎn)擊Properties圖標(biāo),將任一范例的.pbl文件加入到應(yīng)用的Library屬性的
Library Search Path列表框中.
2) 點(diǎn)擊Structure圖標(biāo),在Application Libraries列表中選中范例的.pbl文件,
在structure列表中選擇要定義的結(jié)構(gòu),然后點(diǎn)擊OK命令條.
3) 選擇菜單File/Save As將要定義的結(jié)構(gòu)保存到twapp.pbl中.
4) 相同步驟拷貝其他結(jié)構(gòu).完成后將范例的.pbl文件從應(yīng)用的Library屬性中
去掉.
(3) 聲明動(dòng)態(tài)庫中的函數(shù),其操作如下:
1) 從任一范例中拷貝函數(shù)聲明至剪貼板,即打開任一范例,點(diǎn)擊Script圖標(biāo),選擇
菜單Declare/Global External Function,用鼠標(biāo)選中所有的函數(shù)聲明,按Ctrl+c,
即可將所有的函數(shù)聲明拷貝到剪貼板中.
2) 將函數(shù)聲明拷貝至應(yīng)用中,即打開應(yīng)用,點(diǎn)擊Script圖標(biāo),選擇菜單Declare/Global External Function,
然后按Ctrl+V,即可將所有函數(shù)聲明從剪貼板中拷貝到應(yīng)用中.
(4) 相同方法,通過選擇菜單Declare/Global Variable,將需要的常量聲明加入到應(yīng)用中.
完成上述操作后,就可以在程序中使用動(dòng)態(tài)連接庫中的函數(shù)及相關(guān)的常量及結(jié)構(gòu)定義了.
系統(tǒng)常量定義
============
MAX_ADAPTERS=8 一臺(tái)計(jì)算機(jī)中可以安裝 TW8A 的最大塊數(shù) (8)
MAX_CHANNELS=64 每塊 TW8A 有 8 個(gè)通道, 最大通道數(shù)為 (8 * MAX_ADAPTERS = 64)
DTMF_LEN=32 每個(gè)通道在初始化后最多可接收的 DTMF 碼 (32)
SIGNAL_TYPE=8 信號(hào)音種類數(shù) (8)
SIG_UNKNOWN=96 未知的信號(hào)音 (0x60)
SIG_TIMEOUT=97 信號(hào)音檢查超時(shí) (0x61)
SIG_OFFHOOK=98 被呼叫方已經(jīng)摘機(jī) (0x62)
SIG_NOBODY=99 電話撥通之后無人接聽 (0x63)
SIG_SILENCE=64 無信號(hào)音 (0x40)
SIG_DIAL=65 撥號(hào)音 (0x41)
SIG_RING=0 振鈴回音 (0x00)
SIG_BUSY1=1 忙音 1 (0x01)
SIG_BUSY2=2 忙音 2 (0x02)
返回碼常量定義
==============
E_DRIVER=255 TW8A 驅(qū)動(dòng)程序沒有安裝
E_OK=0 正常
E_COMMAND=1 功能號(hào)錯(cuò)誤
E_LENGTH=2 長(zhǎng)度錯(cuò)誤
E_PLAY_RECORD=3 錄放音不能同時(shí)進(jìn)行
E_CHANNEL=4 非法的通道號(hào)
E_INTERRUPT=5 錯(cuò)誤的中斷號(hào)(可視為E_DRIVER)
通道類型常量定義
================
CT_INTERNAL=0 內(nèi)線通道
CT_EXTERNAL=1 外線通道
CT_EMPTY=2 空通道
壓縮比常量定義
==============
RATE_64K=0 8K字節(jié)/秒
RATE_32K=1 4K字節(jié)/秒
RATE_16K=2 2K字節(jié)/秒
RATE_8K=3 1K字節(jié)/秒
RATE_48K=4 6K字節(jié)/秒
RATE_24K=5 3K字節(jié)/秒
RATE_12K=6 1.5K字節(jié)/秒
RATE_6K=7 0.75K字節(jié)/秒
數(shù)據(jù)類型定義
============
字符名稱枚舉類型(只適用于C語言)
-------------------------------
字符名稱類型用在 TW_MakeSentence(...) 中, 如果應(yīng)用程序需要在放音時(shí)自動(dòng)念
數(shù)字, 那么這個(gè)功能是很有用的. 其中 CN_NOTHING 不產(chǎn)生任何語音. 其定義如下:
typedef enum {
CN_END = 0, // End of sentence (Also end of string)
CN_NOTHING, // Do nothing
CN_DIGIT0, CN_DIGIT1, CN_DIGIT2, CN_DIGIT3, CN_DIGIT4, // 0 - 4
CN_DIGIT5, CN_DIGIT6, CN_DIGIT7, CN_DIGIT8, CN_DIGIT9, // 5 - 9
CN_TEN, // 10
CN_HUNDRED, // 100
CN_THOUSAND, // 1,000
CN_10THOUSAND, // 10,000
CN_100MILLION, // 100,000,000
CN_POINT, // "."
CN_NEGATIVE, // "-"
CN_LAST // To be continued by YOU !
} CHAR_NAME;
另外, 用戶也可以在 CN_LAST 后擴(kuò)展定義其他的字符名稱, 例如
typedef enum {
UCN_USERDEF1 = CN_LAST,
UCN_USERDEF2,
...
UCN_USERDEFn,
UCN_LAST
} USERDEF_CHAR_NAME;
參數(shù)控制塊(不適用于Visual Foxpro5.0)
------------------------------------
1. C語言定義
typedef struct {
WORD SilenceSigMin; // (125=5秒)無信號(hào)音的最短長(zhǎng)度 (單位: 40ms)
WORD DialSigMin; // ( 50=2秒)撥號(hào)音的最短長(zhǎng)度 (單位: 40ms)
WORD SignalPara[SIGNAL_TYPE][4];
// 各種信號(hào)音的時(shí)間參數(shù) (單位: 40ms)
// 其中第一個(gè)下標(biāo)表示信號(hào)音類型, 用戶可以定義信號(hào)音類型 3 到 7
// [x][0] : 信號(hào)音為低時(shí)的最小時(shí)間
// [x][1] : 信號(hào)音為低時(shí)的最大時(shí)間
// [x][2] : 信號(hào)音為高時(shí)的最小時(shí)間
// [x][3] : 信號(hào)音為高時(shí)的最大時(shí)間
//
// 缺省值: [SIG_RING ][] = 90,110, 22, 28 (4, 1 秒)
// [SIG_BUSY1][] = 7, 11, 7, 11 (0.35, 0.35 秒)
// [SIG_BUSY2][] = 11, 14, 11, 14 (0.5, 0.5 秒)
} PCB_STRUC;
2. VB中的定義
Type PCB_STRUC
SilenceSigMin As Integer '(125) 無信號(hào)音的最短長(zhǎng)度(單位:40ms)
DialSigMin As Integer '(50) 撥號(hào)音的最短長(zhǎng)度
SignalPara(31) As Integer '各種信號(hào)音的參數(shù)
//每種信號(hào)音有4個(gè)參數(shù),因此一共有4XSIGNAL_TYPE=32個(gè)參數(shù)
//每種信號(hào)音的4個(gè)參數(shù)依次為(TYPE為信號(hào)音的種類0-7):
' SignalPara(TYPE*4+0):信號(hào)音為低時(shí)的最小時(shí)間
' SignalPara(TYPE*4+1):信號(hào)音為低時(shí)的最大時(shí)間
' SignalPara(TYPE*4+2):信號(hào)音為高時(shí)的最小時(shí)間
' SignalPara(TYPE*4+3):信號(hào)音為高時(shí)的最大時(shí)間
//缺省值:SignalPara(SIG_RING*4+0)=90
SignalPara(SIG_RING*4+1)=110
SignalPara(SIG_RING*4+2)=22
SignalPara(SIG_RING*4+3)=28
SignalPara(SIG_BUSY1*4+0)=7
SignalPara(SIG_BUSY1*4+1)=11
SignalPara(SIG_BUSY1*4+2)=7
SignalPara(SIG_BUSY1*4+3)=11
SignalPara(SIG_BUSY2*4+0)=11
SignalPara(SIG_BUSY2*4+1)=14
SignalPara(SIG_BUSY2*4+2)=11
SignalPara(SIG_BUSY2*4+3)=14
//其余都為0
End Type
3. Delphi中的定義
PCB_STRUCT = record
SilenceSigMin: word; '(125) 無信號(hào)音的最短長(zhǎng)度(單位:40ms)
DialSigMin: word; '(50) 撥號(hào)音的最短長(zhǎng)度
SignalPara: array[0..SIGNAL_TYPE-1,0..3] of word; '各種信號(hào)音的參數(shù)
//每種信號(hào)音有4個(gè)參數(shù),因此一共有4XSIGNAL_TYPE=32個(gè)參數(shù)
//每種信號(hào)音的4個(gè)參數(shù)依次為(TYPE為信號(hào)音的種類0-7):
' SignalPara[TYPE][0]:信號(hào)音為低時(shí)的最小時(shí)間
' SignalPara[TYPE][1]:信號(hào)音為低時(shí)的最大時(shí)間
' SignalPara[TYPE][2]:信號(hào)音為高時(shí)的最小時(shí)間
' SignalPara[TYPE][3]:信號(hào)音為高時(shí)的最大時(shí)間
//缺省值:SignalPara[SIG_RING][0]=90
SignalPara[SIG_RING][1]=110
SignalPara[SIG_RING][2]=22
SignalPara[SIG_RING][3]=28
SignalPara[SIG_BUSY1][0]=7
SignalPara[SIG_BUSY1][1]=11
SignalPara[SIG_BUSY1][2]=7
SignalPara[SIG_BUSY1][3]=11
SignalPara[SIG_BUSY2][0]=11
SignalPara[SIG_BUSY2][1]=14
SignalPara[SIG_BUSY2][2]=11
SignalPara[SIG_BUSY2][3]=14
//其余都為0
end;
PPCB_STRUCT = ^PCB_STRUCT;
4. PowerBuilder中的定義
structure pcb_struc
UnsingedInteger SilenceSigMin '(125) 無信號(hào)音的最短長(zhǎng)度(單位:40ms)
UnsingedInteger DialSigMin '(50) 撥號(hào)音的最短長(zhǎng)度
UnsignedInteger SignalPara[32] '各種信號(hào)音的參數(shù)
//每種信號(hào)音有4個(gè)參數(shù),因此一共有4XSIGNAL_TYPE=32個(gè)參數(shù)
//每種信號(hào)音的4個(gè)參數(shù)依次為(TYPE為信號(hào)音的種類0-7):
' SignalPara[TYPE*4+1]:信號(hào)音為低時(shí)的最小時(shí)間
' SignalPara[TYPE*4+2]:信號(hào)音為低時(shí)的最大時(shí)間
' SignalPara[TYPE*4+3]:信號(hào)音為高時(shí)的最小時(shí)間
' SignalPara[TYPE*4+4]:信號(hào)音為高時(shí)的最大時(shí)間
//缺省值:SignalPara[SIG_RING*4+1]=90
SignalPara[SIG_RING*4+2]=110
SignalPara[SIG_RING*4+3]=22
SignalPara[SIG_RING*4+4]=28
SignalPara[SIG_BUSY1*4+1]=7
SignalPara[SIG_BUSY1*4+2]=11
SignalPara[SIG_BUSY1*4+3]=7
SignalPara[SIG_BUSY1*4+4]=11
SignalPara[SIG_BUSY2*4+1]=11
SignalPara[SIG_BUSY2*4+2]=14
SignalPara[SIG_BUSY2*4+3]=11
SignalPara[SIG_BUSY2*4+4]=14
//其余都為0
系統(tǒng)參數(shù)結(jié)構(gòu)(不適用于Visual Foxpro5.0)
--------------------------------------
1. C中的定義
typedef struct {
BYTE MajorVer; // 驅(qū)動(dòng)程序主版本號(hào)
BYTE MinorVer; // 驅(qū)動(dòng)程序副版本號(hào)
BYTE IRQNo; // 第一塊 TW8A 的 IRQ 設(shè)置
BYTE IntrNo; // IRQ 對(duì)應(yīng)的中斷號(hào)
PCB_STRUC *PCBAddr; // 指向 PCB_STRUC 的指針
WORD AdapterNum; // 系統(tǒng)中安裝的 TW8A 卡的數(shù)量
WORD ChannelNum; // 系統(tǒng)中可使用的通道數(shù)
WORD TW8ASeg[MAX_ADAPTERS]; // 每塊 TW8A 使用的段地址
} SP_STRUC;
2. VB中的定義
Type SP_STRUC
MajorVer As Byte //驅(qū)動(dòng)程序主版本號(hào)
MinorVer As Byte //驅(qū)動(dòng)程序副版本號(hào)
IRQNo As Byte //第一塊TW8A卡的IRQ設(shè)置
IntrNo As Byte //IRQ對(duì)應(yīng)的中斷號(hào)
PCBAddr As Long //PCB_STRUC的地址
AdapterNum As Integer //系統(tǒng)中安裝的TW8A卡的數(shù)量
ChannelNum As Integer //系統(tǒng)中可使用的通道數(shù)
TW8ASeg(MAX_ADAPTERS) As Integer //每塊TW8A使用的段地址
End Type
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -