📄 tw8adll.txt
字号:
(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操作系统中,各种编程语言都可使用动态连接库中的函数,因此TW8A卡的32位驱动程序只提供
一个动态连接库作为编程接口,并根据各中语言使用动态连接库方法提供相应的动态库声明文件以
供使用.
使用方法
========
1. VC5.0
在调用接口函数的源程序中包含头文件TW8A.H
将输入库TW8A.LIB连接至工程中
2. BC5.0
用Borland C++5.0的implib.exe 生成动态连接库TW8A.DLL的输入库TW8A.LIB,方法如下:
implib tw8a.lib tw8a.dll
在调用接口函数的源程序中包含头文件TW8A.H
将输入库TW8A.LIB连接至工程中
3. Delphi4.0
通过在单元文件中加入语句
uses tw8a32
将TW8A32.PAS连接到单元文件中之后即可使用其中的常量及函数过程
4. VB5.0
通过菜单'Project\Add Modul'将TW8A32.BAS连接到工程文件中,之后
即可使用其中的常量及函数过程.
5. VisualFoxpro5.0
在使用此接口中的函数之前, 用户在FoxPro 语言源代码中应先装入
电话卡接口函数:
SET PROCEDURE TO TW8A32.PRG ADDITIVE
=TW_LoadAPI()
之后,在FoxPro 语言源代码中才可以使用接口库文件所提供的函数.
6. PowerBuilder 6.0
由于PowerBuider6.0将所有的源代码都保存在.pbl文件中,因此每次建立新应用时,
都必须手动一步一步地将与动态库的声明相关的代码添加到.pbl文件中.添加动态库
声明的一般步骤如下:
(1) 首先建立一个应用,并将其存入.pbl文件中.
(2) 定义动态库中使用到的结构,其操作方法如下:
1) 点击Properties图标,将任一范例的.pbl文件加入到应用的Library属性的
Library Search Path列表框中.
2) 点击Structure图标,在Application Libraries列表中选中范例的.pbl文件,
在structure列表中选择要定义的结构,然后点击OK命令条.
3) 选择菜单File/Save As将要定义的结构保存到twapp.pbl中.
4) 相同步骤拷贝其他结构.完成后将范例的.pbl文件从应用的Library属性中
去掉.
(3) 声明动态库中的函数,其操作如下:
1) 从任一范例中拷贝函数声明至剪贴板,即打开任一范例,点击Script图标,选择
菜单Declare/Global External Function,用鼠标选中所有的函数声明,按Ctrl+c,
即可将所有的函数声明拷贝到剪贴板中.
2) 将函数声明拷贝至应用中,即打开应用,点击Script图标,选择菜单Declare/Global External Function,
然后按Ctrl+V,即可将所有函数声明从剪贴板中拷贝到应用中.
(4) 相同方法,通过选择菜单Declare/Global Variable,将需要的常量声明加入到应用中.
完成上述操作后,就可以在程序中使用动态连接库中的函数及相关的常量及结构定义了.
系统常量定义
============
MAX_ADAPTERS=8 一台计算机中可以安装 TW8A 的最大块数 (8)
MAX_CHANNELS=64 每块 TW8A 有 8 个通道, 最大通道数为 (8 * MAX_ADAPTERS = 64)
DTMF_LEN=32 每个通道在初始化后最多可接收的 DTMF 码 (32)
SIGNAL_TYPE=8 信号音种类数 (8)
SIG_UNKNOWN=96 未知的信号音 (0x60)
SIG_TIMEOUT=97 信号音检查超时 (0x61)
SIG_OFFHOOK=98 被呼叫方已经摘机 (0x62)
SIG_NOBODY=99 电话拨通之后无人接听 (0x63)
SIG_SILENCE=64 无信号音 (0x40)
SIG_DIAL=65 拨号音 (0x41)
SIG_RING=0 振铃回音 (0x00)
SIG_BUSY1=1 忙音 1 (0x01)
SIG_BUSY2=2 忙音 2 (0x02)
返回码常量定义
==============
E_DRIVER=255 TW8A 驱动程序没有安装
E_OK=0 正常
E_COMMAND=1 功能号错误
E_LENGTH=2 长度错误
E_PLAY_RECORD=3 录放音不能同时进行
E_CHANNEL=4 非法的通道号
E_INTERRUPT=5 错误的中断号(可视为E_DRIVER)
通道类型常量定义
================
CT_INTERNAL=0 内线通道
CT_EXTERNAL=1 外线通道
CT_EMPTY=2 空通道
压缩比常量定义
==============
RATE_64K=0 8K字节/秒
RATE_32K=1 4K字节/秒
RATE_16K=2 2K字节/秒
RATE_8K=3 1K字节/秒
RATE_48K=4 6K字节/秒
RATE_24K=5 3K字节/秒
RATE_12K=6 1.5K字节/秒
RATE_6K=7 0.75K字节/秒
数据类型定义
============
字符名称枚举类型(只适用于C语言)
-------------------------------
字符名称类型用在 TW_MakeSentence(...) 中, 如果应用程序需要在放音时自动念
数字, 那么这个功能是很有用的. 其中 CN_NOTHING 不产生任何语音. 其定义如下:
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 后扩展定义其他的字符名称, 例如
typedef enum {
UCN_USERDEF1 = CN_LAST,
UCN_USERDEF2,
...
UCN_USERDEFn,
UCN_LAST
} USERDEF_CHAR_NAME;
参数控制块(不适用于Visual Foxpro5.0)
------------------------------------
1. C语言定义
typedef struct {
WORD SilenceSigMin; // (125=5秒)无信号音的最短长度 (单位: 40ms)
WORD DialSigMin; // ( 50=2秒)拨号音的最短长度 (单位: 40ms)
WORD SignalPara[SIGNAL_TYPE][4];
// 各种信号音的时间参数 (单位: 40ms)
// 其中第一个下标表示信号音类型, 用户可以定义信号音类型 3 到 7
// [x][0] : 信号音为低时的最小时间
// [x][1] : 信号音为低时的最大时间
// [x][2] : 信号音为高时的最小时间
// [x][3] : 信号音为高时的最大时间
//
// 缺省值: [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) 无信号音的最短长度(单位:40ms)
DialSigMin As Integer '(50) 拨号音的最短长度
SignalPara(31) As Integer '各种信号音的参数
//每种信号音有4个参数,因此一共有4XSIGNAL_TYPE=32个参数
//每种信号音的4个参数依次为(TYPE为信号音的种类0-7):
' SignalPara(TYPE*4+0):信号音为低时的最小时间
' SignalPara(TYPE*4+1):信号音为低时的最大时间
' SignalPara(TYPE*4+2):信号音为高时的最小时间
' SignalPara(TYPE*4+3):信号音为高时的最大时间
//缺省值: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) 无信号音的最短长度(单位:40ms)
DialSigMin: word; '(50) 拨号音的最短长度
SignalPara: array[0..SIGNAL_TYPE-1,0..3] of word; '各种信号音的参数
//每种信号音有4个参数,因此一共有4XSIGNAL_TYPE=32个参数
//每种信号音的4个参数依次为(TYPE为信号音的种类0-7):
' SignalPara[TYPE][0]:信号音为低时的最小时间
' SignalPara[TYPE][1]:信号音为低时的最大时间
' SignalPara[TYPE][2]:信号音为高时的最小时间
' SignalPara[TYPE][3]:信号音为高时的最大时间
//缺省值: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) 无信号音的最短长度(单位:40ms)
UnsingedInteger DialSigMin '(50) 拨号音的最短长度
UnsignedInteger SignalPara[32] '各种信号音的参数
//每种信号音有4个参数,因此一共有4XSIGNAL_TYPE=32个参数
//每种信号音的4个参数依次为(TYPE为信号音的种类0-7):
' SignalPara[TYPE*4+1]:信号音为低时的最小时间
' SignalPara[TYPE*4+2]:信号音为低时的最大时间
' SignalPara[TYPE*4+3]:信号音为高时的最小时间
' SignalPara[TYPE*4+4]:信号音为高时的最大时间
//缺省值: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
系统参数结构(不适用于Visual Foxpro5.0)
--------------------------------------
1. C中的定义
typedef struct {
BYTE MajorVer; // 驱动程序主版本号
BYTE MinorVer; // 驱动程序副版本号
BYTE IRQNo; // 第一块 TW8A 的 IRQ 设置
BYTE IntrNo; // IRQ 对应的中断号
PCB_STRUC *PCBAddr; // 指向 PCB_STRUC 的指针
WORD AdapterNum; // 系统中安装的 TW8A 卡的数量
WORD ChannelNum; // 系统中可使用的通道数
WORD TW8ASeg[MAX_ADAPTERS]; // 每块 TW8A 使用的段地址
} SP_STRUC;
2. VB中的定义
Type SP_STRUC
MajorVer As Byte //驱动程序主版本号
MinorVer As Byte //驱动程序副版本号
IRQNo As Byte //第一块TW8A卡的IRQ设置
IntrNo As Byte //IRQ对应的中断号
PCBAddr As Long //PCB_STRUC的地址
AdapterNum As Integer //系统中安装的TW8A卡的数量
ChannelNum As Integer //系统中可使用的通道数
TW8ASeg(MAX_ADAPTERS) As Integer //每块TW8A使用的段地址
End Type
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -