📄 tw8adll.txt
字号:
3. Delphi中的定义
SP_STRUCT = record
MajorVer: byte;//驱动程序主版本号
MinorVer: byte; //驱动程序副版本号
IRQNo: byte;//第一块TW8A卡的IRQ设置
IntrNo: byte;//IRQ对应的中断号
PCBAddr: PPCB_STRUCT;//指向PCB_STRUC的指针
AdapterNum: word;//系统中安装的TW8A卡的数量
ChannelNum: word;//系统中可使用的通道数
TW8ASeg: array[0..MAX_ADAPTERS-1] of word;//每块TW8A使用的段地址
end;
4. PowerBuilder中的定义
Structure sp_struc
UnsignedInteger Version // 低八位为驱动程序主版本号
// 高八位为驱动程序副版本号
UnsignedInteger IRQNo // 低八位为第一块 TW8A 的 IRQ 设置
// 高八位为IRQ 对应的中断号
Long PCBAddr; // 系统pcb_struc 的地址(没有意义)
UnsignedInteger AdapterNum; // 系统中安装的 TW8A 卡的数量
UnsignedInteger ChannelNum; // 系统中可使用的通道数
UnsignedInteger TW8ASeg[MAX_ADAPTERS]; // 每块 TW8A 使用的段地址
接口函数说明
============
****注意: TurboWay 的所有函数被调用后都立即返回 !
已取消的函数:
#############
Window 16位编程接口中的函数TW_SetClose() 已被取消.
新增加的函数:
#############
与Window 16位编程接口相比, 增加了函数TW_GetReturnCode().
相应的取消了全局变量TW_ReturnCode(在FoxPro中为TWOK)
初始化函数:
###########
TW_Installed
------------
语法:
C : WORD TW_Installed (void)
VB: TW_Installed() As Integer
Delphi: function TW_Installed:WORD
VF: TW_Installed()
PB: UnsignedInteger TW_Installed()
功能: 判断 TW8A 驱动程序是否已经安装
参数: 无
返回: 系统中可使用的通道数 (0 : 驱动程序没有安装)
说明: 在应用程序启动时, 一定要先调用 TW_Installed(...) 来判断 TW8A
驱动程序是否已安装, 如果没有安装, 应用程序应该提示出错信息,
然后返回操作系统. 本函数不对电话卡进行初始化
TW_Initialize
-------------
语法:
C : void TW_Initialize (void)
VB: Sub TW_Initialize
Delphi: procedure TW_Initialize
VF: TW_Initialize()
PB: SUBROUTINE TW_Initialize()
功能: 初始化系统中所有的 TW8A 电话卡
参数: 无
返回: 无
说明: 应用程序在调用 TW_Installed(...) 后, 一般可调用 TW_Initialize(...)
对电话卡进行初始化. 初始化工作完成后, 所有外线都处于挂机状态, 内线
处于馈电状态, 正在进行的录放音及收发 DTMF 码等工作都被中止, 系统中
断被打开, 准备处理各种函数调用工作
TW_Disable
----------
语法:
C : void TW_Disable (void)
VB: Sub TW_Disable
Delphi: procedure TW_Disable
VF: TW_Disable()
PB: SUBROUTINE TW_Disable()
功能: 禁止 TW8A 工作
参数: 无
返回: 无
说明: 在 TurboWay 应用程序退出前, 一般可调用此函数. TW_Diable(...) 首先
进行初始化工作, 然后关闭系统中断, 以后的所有函数调用都无效, 除非
调用函数 TW_Initialize(...)
检测及控制函数:
###############
TW_ChannelType
--------------
语法:
C : WORD TW_ChannelType (WORD Ch)
VB: Function TW_ChannelType (ByVal Ch As Integer) As Integer
Delphi: function TW_ChannelType(Ch:WORD):WORD
VF: TW_ChannelType(Ch)
PB: FUNCTION UnsignedInteger TW_ChannelType(UnsignedInteger Ch)
功能: 查询某一通道的类型
参数: Ch:通道号
返回: 通道类型,参阅 <通道类型常量定义>
TW_OffHookDetect
----------------
语法:
C : BOOL TW_OffHookDetect (WORD Ch)
VB: Function TW_OffHookDetect (ByVal Ch As Integer) As Integer
Delphi: function TW_OffHookDetect(ch: WORD): Boolean
VF: TW_OffHookDetect(Ch)
PB: FUNCTION integer TW_OffHookDetect(UnsignedInteger Ch)
功能: 判断某一内线通道是否已摘机
参数: Ch:通道号
返回: 0 : 挂机; 非 0 : 摘机
TW_RingDetect
-------------
语法:
C : WORD TW_RingDetect(WORD Ch)
VB: Function TW_RingDetect(ByVal Ch As Integer) As Integer
Delphi: function TW_RingDetect(Ch:WORD):WORD
VF: TW_RingDetect(Ch)
PB: FUNCTION UnsignedInteger TW_RingDetect(UnsignedInteger Ch)
功能: 判断某一外线通道是否在振铃
参数: Ch:通道号
返回: 0 : 没有振铃; > 0 : 振铃次数
说明: 如下图所示: R 为振铃次数, 在第一次振铃信号的上升沿, 检测到有振铃,
振铃次数置为 1, 此后, 在每次振铃信号的下降沿计数, 每次振铃结束后振
铃次数加 1. 由于第一次振铃一开始, 振铃计数就是 1, 而在第一次振铃信
号的下降沿又计数一次, 因此, 实际的振铃次数要比返回值少一次
振铃信号 1秒
┌─┐ ┌─┐ ┌─┐
↑│ │↓ 4秒 │ │↓ │ │↓ ……
──┘ └────┘ └────┘ └──
R=1 R=2 R=3 R=4
TW_HangUpCtrl
-------------
语法:
C : void TW_HangUpCtrl(WORD Ch)
VB: Sub TW_HangUpCtrl(ByVal Ch As Integer)
Delphi: procedure TW_HangUpCtrl(Ch:WORD)
VF: TW_HangUpCtrl(Ch)
PB: SUBROUTINE TW_HangUpCtrl(UnsignedInteger Ch)
功能: 控制某一外线通道挂机
参数: Ch:通道号
返回: 无
TW_OffHookCtrl
--------------
语法:
C : void TW_OffHookCtrl(WORD Ch)
VB: Sub TW_OffHookCtrl(ByVal Ch As Integer)
Delphi: procedure TW_OffHookCtrl(Ch:WORD)
VF: TW_OffHookCtrl(Ch)
PB: SUBROUTINE TW_OffHookCtrl(UnsignedInteger Ch)
功能: 控制某一外线通道摘机
参数: Ch:通道号
返回: 无
说明: 对外线进行录放音, 收发 DTMF 码或信号检测前, 必须进行摘机操作
TW_RingCtrl
-----------
语法:
C : void TW_RingCtrl(WORD Ch)
VB: Sub TW_RingCtrl(ByVal Ch As Integer)
Delphi: procedure TW_RingCtrl(Ch:WORD)
VF: TW_RingCtrl(Ch)
PB: SUBROUTINE TW_RingCtrl(UnsignedInteger Ch)
功能: 控制某一内线通道产生连续的振铃
参数: Ch:通道号
返回: 无
说明: 如果需要产生振铃, TW8A 电话卡上应该外接振铃电源, 请参阅硬件手册
TW_PowerCtrl
------------
语法:
C : void TW_PowerCtrl(WORD Ch)
VB: Sub TW_PowerCtrl(ByVal Ch As Integer)
Delphi: procedure TW_PowerCtrl(Ch:WORD)
VF: TW_PowerCtrl(Ch)
PB: SUBROUTINE TW_PowerCtrl(UnsignedInteger Ch)
功能: 控制某一内线通道停止振铃, 同时产生馈电
参数: Ch:通道号
返回: 无
说明: 如果 TW8A 内线通道需要产生馈电, 电话卡上应该外接馈电源
TW_GenerateSignal
-----------------
语法:
C : void TW_GenerateSignal(WORD Ch,WORD SigType)
VB: Sub TW_GenerateSignal(ByVal Ch As Integer,ByVal SigType As Integer)
Delphi: procedure TW_GenerateSignal(Ch:WORD;SigType:WORD)
VF: TW_GenerateSignal(Ch,SigType)
PB: SUBROUTINE TW_GenerateSignal(UnsignedInteger Ch, UnsignedInteger SigType)
功能: 在某一通道产生信号音
参数: Ch: 通道号
SigType: 信号音类型 (参阅<系统常量定义>)
返回: 无
说明: 这里的信号音也可以是用户自定义的信号音, 如果信号音为 SIG_SILENCE,
则停止输出信号音
TW_GenerateRing
---------------
语法:
C : void TW_GenerateRing(WORD Ch)
VB: Sub TW_GenerateRing(ByVal Ch As Integer)
Delphi: procedure TW_GenerateRing(Ch:WORD)
VF: TW_GenerateRing(Ch)
PB: SUBROUTINE TW_GenerateRing(UnsignedInteger Ch)
功能: 在某一通道输出自动断续的振铃
参数: Ch:通道号
返回: 无
说明: 和 TW_RingCtrl(...) 一样, 调用 TW_PowerCtrl(...) 可以停止振铃
8B卡专用函数:
#############
TW_TW8BRingStatus
-----------------
语法:
C : WORD TW_TW8BRingStatus(WORD Ch)
VB: Function TW_TW8BRingStatus(ByVal Ch As Integer) As Integer
Delphi: function TW_TW8BRingStatus(Ch:WORD):WORD
VF: TW_TW8BRingStatus(Ch)
PB: FUNCTION UnsignedInteger TW_TW8BRingStatus( UnsignedInteger Ch)
功能: 检测出 TW8B 型电话卡的某一通道有无振铃
参数: Ch:通道号
返回: 0: 没有振铃;
非0:有振铃
说明: 对于 TW8B 型电话卡, 内部已经集成了 8 个搭线通道, 此函数可以检测
出外面打入电话的振铃信号. 对于 TW8A 型电话卡, 此函数无效
TW_TW8BVoltage
--------------
语法:
C : void TW_TW8BVoltage(WORD Ch, WORD Voltage)
VB: Sub TW_TW8BVoltage(ByVal Ch As Integer, ByVal Voltage As Integer)
Delphi: procedure TW_TW8BVoltage(Ch:WORD;Voltage:WORD)
VF: TW_TW8BVoltage(Ch,Voltage)
PB: SUBROUTINE TW_TW8BVoltage(UnsignedInteger Ch, UnsignedInteger Voltage)
功能: 设置TW8B型电话卡某一通道的摘机电压的阈值
参数: Ch: 通道号
Voltage: 电压阈值
返回: 无
说明: TW8B卡通过检测线路中的电压来判断线路是否摘挂机.
函数TW_TW8BVoltage的作用是设定通道的电压阈值,各
阈值对应的电压值如下:
阈值 电压值(v)
15 17
14 18
13 19.5
12 21
11 22.5
10 24
9 25.7
8 28
7 31
6 35
5 40
4 45
3 55
2 62
1,0 >62
若某一通道的电压阈值设为15, 则当线路上的电压低于17v时,
TW8B卡认为线路处于摘机状态, 函数TW_OffHookDetect的返回
值为非零; 当线路上的电压高于17v时, 认为线路处于挂机状态,
函数TW_OffHookDetect的返回值为0;
通常情况下, 线路上的电压随摘挂机而变化,摘机时线路上的电
压一般要比挂机时低10-20伏.通过设置某一通道的电压阈值,使其
对应的电压值处于线路的摘机电压与挂机电压之间,就能使卡判断
出线路的摘挂机状态.
录放音函数:
###########
录放音函数可分为三类: 缓冲区录放音, 文件录放音和多文件连续放音.
缓冲区录放音需事先定义各通道的内存缓冲区, 以保留语音信息. 文件
录放音则采用缺省的录放音缓冲区大小 (用户也可自己改变), 在缓冲
区满后自动将数据送入磁盘文件或电话卡, 而缓冲区录放音则必须用户
自己判断何时传送数据. 因此, 建议用户使用文件录放音函数. 缓冲区
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -