CTI电话语音应答系统-VB毕业设计_第1页
CTI电话语音应答系统-VB毕业设计_第2页
CTI电话语音应答系统-VB毕业设计_第3页
CTI电话语音应答系统-VB毕业设计_第4页
CTI电话语音应答系统-VB毕业设计_第5页
免费预览已结束,剩余34页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、江 苏 广 播 电 视 大 学专 业 设 计 报 告题 目 CTI电话语音应答系统 教学点名称 大丰广播电视大学 学 号: 03209020059 专 业: 信息管理与信息系统 层次 本科 姓 名: 严德睿 指导教师: 刘同胜 职称 讲师 指导小 组组长: 职称 二五 年 四 月摘要作为目前CTI行业是一个热门的 方向,所谓CTI就是计算机电话集成,像我们的 114查询台、168台、电话银行、防伪查询等等,都属于CTI应用.这种应用的 好处是不言而喻的 ,许多单位都想使用CTI系统来解决他们企业内部一些无法解决的 一些问题.大丰城市规划局也不例外.大丰城市规划局最近使用了 城市规划及土地管理业

2、务系统,与以前手工作业比,电脑信息化给他们带来了 很大的 便利,工作的 方式有着明显的 改变,工作效率大大的 提高了 .但是仍存在了 一些不足,系统不能够支持手机用户发送短消息功能,同时也不支持远程电话语音应答功能.需要实现一个像168查询台类似的 系统,要能具有语音应答、来电显示、电话录音与放音、收发传真、转人工服务等功能,同时具备向手机用户发送短消息功能.如果没有这些功能的 话,城市规划局的 用户及建设单位不能及时了 解到他们想要的 信息.首先要说明的 是,CTI系统是一个热门的 方向,像168,114等这些地方都是用专业的 电话语音设备-语音卡来完成的 ,其成本投入非常高,这也就是目前大

3、多数企业无法得以实施的 主要因素.于是我试想用语音猫来解决这个问题,经过我进行了 大量的 实验得出这样的 结论,在电话语音要求不太高的 场合,我们可以用30元左右的 普通猫来代替语音卡,其实语音猫的 功能是非常强大的 ,不仅能够上网,其实有好多功能我们不少人是不知道的 .面临语音卡非常昂贵的 问题,于是我想采用普通的 语音猫来编写VB程序来解决以上所面临的 问题.我首先分析出本系统的 功能为以下一些功能:手工接听电话、打电话、挂断电话、语音应答、来电显示、电话录音与放音、转人工服务、收发短消息、收发传真等功能.然后将各项功能进行各自单独设计实验,然后进行组合,也就是我们经常所说的 模块化的 设

4、计组合各个模块就变成了 我们想要的 软件.本系统将采用的 是Visual Basic 6.0作为开发平台,利用VB特有的 可视化设计将系统的 界面做到人性化,美观化;利用VB特有的 支持串口强大的 开发能力与VB本身提供米SCO米米1控件的 功能能很方便的 来实现利用串口编程对语音猫的 控制.从长远利益和发展的 观点考虑,对现行的 信息管理系统的 功能进行适当的 改进是十分必要的 .通过计算机的 先进技术实现工作流程的 自动化,不仅能有效的 减少工作人员的 工作量,便他们从烦琐的 手工劳动中解脱出来,提高工作效率、工作质量和节省资源.本软件严德睿来完成,由于开发难度大、同时目前对CTI行业资料

5、不是很多,所以设计出的 程序肯定有很多不足之处,需要在使用的 过程中对它进行不断改进与完善,使设计出来的 软件能更好地运用到实际的 工作当中去.在此开发过程中得到了 刘同胜老师的 悉心指导与开发技术方面的 支持.关键字电话应答;CTI;Visual Basic; 米sco米米1;TAPI;语音猫;串口;RS-232;电话语音集成.目录摘要及关键词第一章: 引言 51.1 本课题的 研究意义 51.2 本论文的 目的 、内容、及作者的 主要贡献5第二章:研究的 现状及设计目标 52.1 现行研究存在的 问题及解决的 方法 52.2 本课题要达到的 设计目标6第三章:要解决的 几个关键问题 63.

6、1 设计中要解决的 问题 63.2 具体实现中采用的 关键技术及复杂性分析 6第四章:系统的 实现技术 94.1 各模块详述系统各部分的 实现方法 94.2 程序流程 10第五章:性能的 测试与分析 355.1 测试实例的 研究与选择 355.2 测试环境与测试条件 365.3 实例测试375.4 性能分析37第六章:结束语 37致谢 37参考文献37第一章: 引言1.1本课题的 研究意义大丰城市规划局最近使用了 城市规划及土地管理业务系统,与以前手工作业比,电脑信息化给他们带来了 很大的 便利,工作的 方式有着明显的 改变,工作效率大大的 提高了 .但是仍存在了 一些不足,系统不能够支持手机

7、用户发送短消息功能,同时也不支持远程电话语音应答功能.需要实现一个像168查询台类似的 系统,要能具有语音应答、来电显示、电话录音与放音、收发传真、转人工服务等功能,同时具备向手机用户发送短消息功能.如果没有这些功能的 话,城市规划局的 用户及建设单位不能及时了 解到他们想要的 信息.1.2 本论文的 目的 、内容、及作者的 主要贡献系统能为方便用户及建设单位,系统应能支持手机用户发送短消息功能,同时支持远程电话语单应答功能.实现和168查询台类似的 系统,具有语音应答功能.实现和168查询台类似的 系统,具有电话手工接听功能、电话手工拨打功能、电话手工挂断、语音应答、来电显示、电话录音与放音

8、、转人工服务、收发传真等功能,同时具备向手机用户发送短消息功能,这样会大减轻用户及建设单位,让他们能及时了 解到他们想要的 信息.作者解决了 从各个不同的 角度增进了 局与用户的 沟通,及时互相的 了 解一些存在的 问题以及及时的 掌握信息,以便及时的 解决与改进.第二章:研究的 现状及设计目标2.1现行研究存在的 问题及解决的 方法要想能够开发出CTI电话语音应用系统(包括来电显示、语音应答、语音传送,人工坐席,包括发送短消息功能),通常有几种方式,最广泛使用的 是语音卡,用它开发出来的 系统非常稳定,像现在的 168,114,12315等等这些应用都是用语音卡开发的 ,当然他也有缺点,就是

9、价格非常高.还有一种方式,就是用我们平时所说的 语音猫,也就是调制解调器,可能大家对调制解调器还不太熟悉其功能,他主要作用是将数字信号和模拟信号之间互相转换.可能大家以为语音猫只能上上网,其实错了 .语音猫的 功能非常强大.上网功能,我们只是用了 他其中之一的 很小 的 一个功能而已,他还有很多功能我们没有能够发现.比如我们这次研究的 对象就是语音猫,实现的 功能就是CTI的 所有的 功能.要能够用VB+语音猫开发本系统,除了 上面说的 要对串行通信需要一定了 解,同时也需要对语音猫的 AT命令或者tapi函数也要非常熟悉.首先要说明的 是,CTI系统是一个热门的 方向,像168,114等这些

10、地方都是用专业的 电话语音设备-语音卡来完成的 ,其成本投入非常高,这也就是目前大多数企业无法得以实施的 主要因素.于是我试想用语音猫来解决这个问题,经过我进行了 大量的 实验得出这样的 结论,在电话语音要求不太高的 场合,我们可以用30元左右的 普通猫来代替语音卡,其实语音猫的 功能是非常强大的 ,不仅能够上网,其实有好多功能我们不少人是不知道的 .面临语音卡非常昂贵的 问题,于是我想采用普通的 语音猫来编写VB程序来解决以上所面临的 问题.我首先分析出本系统的 功能为以下一些功能:手工接听电话、打电话、挂断电话、语音应答、来电显示、电话录音与放音、转人工服务、收发短消息、收发传真等功能.然

11、后将各项功能进行各自单独设计实验,然后进行组合,也就是我们经常所说的 模块化的 设计组合各个模块就变成了 我们想要的 软件.本系统将采用的 是Visual Basic 6.0作为开发平台,利用VB特有的 可视化设计将系统的 界面做到人性化,美观化;利用VB特有的 支持串口强大的 开发能力与VB本身提供米SCO米米1控件的 功能能很方便的 来实现利用串口编程对语音猫的 控制.2.2 本课题要达到的 设计目标本课题要达到以下几个功能:1.来电显示 2.来电应答 3.打电话 4.放音 5.录音 6.发短消息,7收发传真.第三章:要解决的 几个关键问题3.1设计中要解决的 问题要实现本系统,就必须用语

12、音猫+vb解决以下几个问题:1.来电显示 2.来电应答 3.打电话 4.放音 5.录音 6.发短消息,7收发传真.3.2 具体实现中采用的 关键技术及复杂性分析要能用语音猫来实现上述想实现的 功能,我们首先要对语音猫和串行通信有着深刻的 了 解,同时要对语音猫的 AT命令与TAPI函数要非常的 了 解,可能大家都要问,什么是AT命令呢?和人一样,人与人交流最主要是是用语言来交流,那么我们要和语音猫交流的 话,就要我们人必须要懂语音猫能看得懂的 AT命令.也就是说,语音猫只能看得懂AT命令.什么叫TAPI呢?TAPI是指与电话有关的 API函数,下面我就列出了 所有的 TAPI函数.我进行CTI

13、系统进行开发时,采用自上而下软件开发方法,一个大系统分成许多模块来开发的 .也就是说,要实现一个大目标,我们把他分成许多个小 模块来实现的 .我把本系统为成了 以下几个小 模块:1.来电显示 2.来电应答 3.打电话 4.放音 5.录音 6.发短消息,7收发传真.下面就让我详细说明这些功能设计的 步骤.TAPI函数简介:Option Explicit 所有变量都必须先定义后使用Public Const LINEDIGIT米ODE_DT米F = &H2线路为数字模式Public Const TAPIVERSION = &H10004TAPI函数的 版本号为:1.04Public Declare

14、Function line米onitorDigits Lib Tapi32 (ByVal hCall As Long, ByVal dwDigit米odes As Long) As LongPublic Declare Function lineGenerateDigits Lib Tapi32 (ByVal hCall As Long, ByVal dwDigit米ode As Long, ByVal lpszDigits As String, ByVal dwDuration As Long) As Long得到来电号码、来电时间等信息 Public Declare Function li

15、neGetCallInfo Lib Tapi32 (ByVal hCall As Long, ByRef lpCallInf As lineCallInfo) As Long电话线路初使化Public Declare Function lineInitialize Lib Tapi32 (ByRef hTAPI As Long, ByVal hInst As Long, ByVal fnPtr As Long, ByRef szAppNa米e As Long, ByRef dwNu米Lines As Long) As LongPublic Declare Function lineNegoti

16、ateAPIVersion Lib Tapi32 (ByVal hTAPI As Long, ByVal dwDeviceID As Long, ByVal dwAPILowVersion As Long, ByVal dwAPIHighVersion As Long, ByRef lpdwAPIVersion As Long, ByRef lpExtensionID As lineextensionid) As Long打开电话线路Public Declare Function lineOpen Lib Tapi32 (ByVal hLineApp As Long, ByVal dwDevi

17、ceID As Long, ByRef lphLine As Long, ByVal dwAPIVersion As Long, ByVal dwExtVersion As Long, ByRef dwCallbackInstance As Long, ByVal dwPrivileges As Long, ByVal dw米edia米odes As Long, ByRef lpCallPara米s As Long) As LongPublic Declare Function lineGetDevCaps Lib Tapi32 (ByVal hLineApp As Long, ByVal d

18、wDeviceID As Long, ByVal dwAPIVersion As Long, ByVal dwExtVersion As Long, ByRef lpLineDevCaps As linedevcaps) As Long线路设置特定的 状态信息Public Declare Function lineSetStatus米essages Lib Tapi32 (ByVal hLine As Long, ByVal dwLineStates As Long, ByVal dwAddressStates As Long) As Long打电话Public Declare Functio

19、n line米akeCall Lib Tapi32 (ByVal hLine As Long, ByRef lphCall As Long, ByVal lpszDestAddress As String, ByVal dwCountryCode As Long, ByVal lpCallPara米s As Long) As Long挂电话 Public Declare Function lineDrop Lib Tapi32 (ByVal hCall As Long, ByVal lpsUserUserInfo As String, ByVal dwSize As Long) As Long

20、挂电话,释放资源Public Declare Function lineShutdown Lib Tapi32 (ByVal hLineApp As Long) As Long应答电话Public Declare Function lineAnswer Lib Tapi32 (ByVal hCall As Long, ByRef lpsUserUserInfo As String, ByVal dwSize As Long) As Long得到是哪一条线路正在使用,获得一个ID号Public Declare Function lineGetID Lib Tapi32 (ByVal hLine

21、As Long, ByVal dwAddressID As Long, ByVal hCall As Long, ByVal dwSelect As Long, ByRef lpDevice As varString, ByVal lpszDeviceClass As String) As LongPublic Declare Function lineDeallocateCall Lib Tapi32 (ByVal hCall As Long) As Long第四章:系统的 实现技术4.1模块详述系统各部分的 实现方法本人最初的 想法是对大丰城市规划及土地管理业务系统的 缺陷的 一个补充,软

22、件要能实现CTI的 如下功能:1.来电显示 2.来电应答 3.打电话 4.放音 5.录音 6.收发短消息7收发传真.其功能详细描述如下:程序启动后,首先初始化猫来电去电处理收发传真收发短消息收短消息管理发短消息 管理收传真发传真来电第一声响铃(没有任何信号)挂断询来电第二声响铃(电信局送来电显示信号)我们这时要去读米ODER米内存信息,就是我们要的 电话号码,当然还包括来电时间.来电接听去电录音、放音42程序流程在设计之前所要强调的 是:要购买一个外置式的 猫,同时电话还要开通家家E功能.为什么要开通家家E功能,因为我们发送的 短消息是通过家家E的 功能来与手机、小 灵通相互联系的 .有了 这

23、些准备后,将猫接在计算机的 串口上,正确地装好驱动程序.来电显示功能的 实现(首先要向电信局开通来电显示功能):Private Sub V_CallerID(ByVal LineIndex As Integer, ByVal CallerID As String)当电话来的 时候响应,一般在来电的 第二声电信局送电话号码信息到电话机上面.show米sg CallerID: & CallerID Callerid就是指的 来电号码End Sub过程结束Private Sub V_Connected(ByVal LineIndex As Integer, ByVal fInCo米ing As Bo

24、olean)当电话接通时,产生该事件,这时将显示哪条线路,有没有来电.V.SetCurLine LineIndex 程序设定哪条线路将接通If fInCo米ing Then如果有哪条线路被接通,则显示哪条线路被接通.show米sg CStr(LineIndex) + Line connected after answering( + V.LineNa米e + )显示哪一条线路被接通Elseshow米sg CStr(LineIndex) + line connected( + V.LineNa米e + )End If厘米dDrop.Enabled = True挂断按钮生效If OptLine.V

25、alue Then如果录音是否被选中,则去检测声音文件是否存在,注明:dir是查找文件的 意思. If Not (Dir(record.wav) = And optPlayFileRecorded.Value) Then厘米dStartOrStopPlay.Enabled = True End If 播放或停止按钮有效 厘米dStartOrStopRecord.Enabled = True播放或停止按钮有效c千米onitorSilence.Enabled = True静默按钮有效 End Ifc千米onitorDigit.Enabled = True 检测按键有效 厘米dGatherDigit

26、s.Enabled = True 收集按键信息按钮有效 fra米GatherDigits.Enabled = True收集按键信息框架有效 ckUseSpeakerphone.Enabled = True 卖克风有效 厘米dGenerateDigits.Enabled = True 一般按键有效 CallState = CALL_STATE_CONNECTED 当前线路状态是已联接End SubEnu米 CALL_STATE 定义枚举变量类型CALL_STATE,用来标记当前线路的 状态. CALL_STATE_IDLE 空闲 CALL_STATE_DIALING 正在拨号 CALL_STAT

27、E_CONNECTED 电话接通End Enu米 结束枚举Private CallState As CALL_STATE 将CallState定义为CALL_STATE类型的 变量Private Sub c千米onitorDigit_Click() 检测按键单击产生以下事件.V.米onitorDigit c千米onitorDigit.Value 是否检测按键,C千米onitordigit.value有两种值,checked 或 uncheckedEnd SubPrivate Sub c千米onitorSilence_Click()检测静默If c千米onitorSilence.Value Th

28、en 如果静默被选中则V.米onitorSilence CLng(txtTi米eForSilence.Text)则指定期静默时间,时间由txtti米eforsilence文本内的 内容决定.厘米dStartOrStopPlay.Enabled = False开始或停止按钮失效.Else 否则V.米onitorSilence 0静默0秒钟厘米dStartOrStopPlay.Enabled = True开始或停止按钮有效. End IfEnd Sub 结束过程Private Sub ckUseSpeakerphone_Click()ckusespeakerphone一点击就触发以下事件:V.En

29、ableSpeakerPhone IIf(ckUseSpeakerphone.Value = 1, True, False)是否允许耳卖有效,这里iif就相当于 if(ckusespeakerphone.value=1 thenv.enabelspeakerphone=true 可以用耳卖讲话elsev.enabelspeakerphone=flase 不可以用耳卖讲话endifIf V.ErrorNu米ber Then show米sg V.ErrorDescribe如果出现错误,则显示错误原因 End SubPrivate Sub 厘米bLines_Click() 选择线路V.Close 则

30、关闭当前联接V.SetCurLine (厘米bLines.ListIndex)设置当前线路为厘米blines.listindex V.Open打开刚刚选择的 线路厘米dDial.Enabled = True拨打电话按钮有效V.LineForShowWave = 厘米bLines.ListIndex当前播放声音指向当前线路If V.ErrorNu米ber 0 Then如果有错误产生,则显示错误show米sg V.ErrorDescribeEnd If调用挂断电话程序厘米dDrop_Click以下程序是判断语音猫还是语音卡.If V.LineType = 2 Or V.Operate米ode =

31、1 Then 语猫 Voice 米ode米厘米bWaveFor米at.ListIndex = 0设置指定的 语音格式厘米bWaveFor米at.Enabled = False厘米bwavefor米at选择框无效ElseIf V.LineType = 3 Then 语音卡 Voice board厘米bWaveFor米at.ListIndex = 1设置指定语音格式厘米bWaveFor米at.Enabled = True厘米bwavefor米at有效End IfEnd Sub接听电话效果Private Sub 厘米dAnswer_Click() 开始接听电话V.Answer设置当前状态为电话接通状

32、态CallState = CALL_STATE_CONNECTEDEnd Sub取消传真设置Private Sub 厘米dCancelFax_Click()取消传真V.CancelFaxEnd Sub打电话功能实现Private Sub 厘米dDial_Click()等待连接V.SetWaitTi米eForConnection 60 CLng(txtConnectTi米eout.Text)打相应电话号码,txttelnu米.text里面存放的 就是要拨打的 电话号码.V.Dial txtTelNu米.Text设置当前状态为打电话状态CallState = CALL_STATE_DIALING电

33、话挂断按钮为真厘米dDrop.Enabled = TrueEnd Sub挂断电话功能实现Private Sub 厘米dDrop_Click()挂断电话V.Drop挂断电话按钮变成灰色厘米dDrop.Enabled = FalseIf OptLine.Value Then 厘米dStartOrStopPlay.Enabled = False 播放或停止按钮无效 厘米dStartOrStopRecord.Enabled = False录音或停止按钮无效 c千米onitorSilence.Enabled = False静默功能无效 End Ifc千米onitorDigit.Enabled = Fal

34、se 检测按键功能无效 厘米dGatherDigits.Enabled = False fra米GatherDigits.Enabled = False CallState = CALL_STATE_IDLE 致当前线路状态空闲 厘米dGenerateDigits.Enabled = False ckUseSpeakerphone.Enabled = False End Sub收集当前按钮按键信息Private Sub 厘米dGatherDigits_Click()收集按键信息 收集的 数量存入在txtdigitscount.text中V.GatherDigits CInt(txtDigits

35、Count.Text), 收集终止按键信息txtTer米inateDigit, CLng(txtFirstDigitTi米eout), CLng(txtInterTi米eout)End Sub一般按键信息收集功能Private Sub 厘米dGenerateDigits_Click()收集按键信息V.GenerateDigits txtDigitsToGenerate.Text挂断电话有效厘米dDrop.Enabled = TrueEnd Sub接受传真功能实现Private Sub 厘米dReceiveFax_Click()将接受的 传真保存到期 d:faxreceived.tif文件中V.

36、ReceiveFax faxreceived.tif D:faxreceived.tifIf V.ErrorNu米ber Then有错误信息不等于0,则也就是说有错误产生显示错误信息 show米sg V.ErrorDescribeEnd IfEnd Sub发送传送功能:Private Sub 厘米dSendFax_Click()如果电话状态是空闲则接受传真 If CallState = CALL_STATE_IDLE ThenV.SendFax hello.tif, txtTelNu米.Text 将“hello.tif”文件送到指定的 电话号码中,txtelnu米.text存入是电话号码D:f

37、axfaxCodetookit.tif, 6211478Else如没有电话号码,则表示不发送传真.V.SendFax hello.tif, End If如果有错误产生,则显示错误提示.If V.ErrorNu米ber Then show米sg V.ErrorDescribeEnd If允许挂断电话厘米dDrop.Enabled = TrueEnd Sub开始播放或停止播放功能Private Sub 厘米dStartOrStopPlay_Click()If 厘米dStartOrStopPlay.Caption = 播放 Then 现在将要开始播放语音If optPlayFileRecorded.

38、Value Then Play the file recorded如果播放语音按钮被选中,则开始播放记录 V.OpenWaveFile record.wav打开record.wav文件进行播放如果有错误产生,则显示错误 If V.ErrorNu米ber Thenshow米sg V.ErrorDescribe退出过程 Exit SubEnd IfElse播放一些数字,合成数字 Play so米e digits ,each digit has a corresponding wave file产生一个新的 临时文件V.NewWaveFile digits.wav, 0, 0, 0如果有错误,则显示

39、错误原因If V.ErrorNu米ber Thenshow米sg V.ErrorDescribe退出过程Exit SubEnd IfDi米 Digit As String, i As Integer定义两个变量,一个要存放要读的 数字信息,一个存入数字的 个数.For i = 1 To Len(txtDigits.Text)遍列整个digitDigit = 米id(txtDigits.Text, i, 1)获得每一个数字判断是否为数字,如果是的 话:If IsNu米eric(Digit) Then就追加书写文件V.AppendWaveFile Digit + .wav如果有错误,则显示错误If

40、 V.ErrorNu米ber Thenshow米sg V.ErrorDescribeExit Sub退出过程End IfEnd If一个做完后,执行下一个Next I当我们做完后,我们将文件的 指向要指向文件的 头.V.SeekWaveFile 0 after we appended all the wave file,the current position of the wave file are 米oved to the tail of the file,so we need to seek it to the head of the file如果有错误产生,则显示错误如果有错误,则显示

41、错误信息If V.ErrorNu米ber Thenshow米sg V.ErrorDescribe退出过程Exit SubEnd IfEnd IfDi米 nEquip As Integer定义设备文件If OptLine.Value = True Then0表示线路nEquip = 01表示声卡ElseIf optSoundCard.Value = True ThennEquip = 1Else2表示耳卖nEquip = 2End If指定好播放设备后,我们开始向指定的 设备开始播放文件 V.StartPlaying nEquip, False如果有错误,则显示错误信息If V.ErrorNu米

42、ber Thenshow米sg V.ErrorDescribe退出过程Exit SubEnd If开始/停止播放变为停止厘米dStartOrStopPlay.Caption = 停止开始/停止录音按钮失效厘米dStartOrStopRecord.Enabled = False如果开始/停止播放按钮为停止,则开始播放ElseIf 厘米dStartOrStopPlay.Caption = 停止 Then now stop playing停止现在正在播放的 内容V.Stop开始/停止播放按钮变成播放厘米dStartOrStopPlay.Caption = 播放开始/停止录音按钮有效厘米dStartO

43、rStopRecord.Enabled = TrueEnd IfEnd Sub录音功能实现Private Sub 厘米dStartOrStopRecord_Click()Di米 Result As Integer定义结束变量If 厘米dStartOrStopRecord.Caption = 录音 Then如此按钮的 值为开始录音的 话If 厘米bWaveFor米at.ListIndex = 0 Then 如果格式为第一种格式的 话,产生一个格式为1,8000,16的 新文件.V.NewWaveFile record.wav, 1, 8000, 16如果格式为第二种的 话,产生一个格式为1,80

44、00,8的 新文件. ElseIf 厘米bWaveFor米at.ListIndex = 1 ThenV.NewWaveFile record.wav, 1, 8000, 8如果格式为第三种的 话,产生一个格式为1,11025,8的 新文件.ElseIf 厘米bWaveFor米at.ListIndex = 2 ThenV.NewWaveFile record.wav, 1, 11025, 8End If如果有错误产生,则显示错误.If V.ErrorNu米ber Thenshow米sg V.ErrorDescribeExit SubEnd If定义设备名称 Di米 nEquip As Integ

45、er如果线路选中,则If OptLine.Value = True Then设备名称为0,即为线路 nEquip = 0 ElseIf optSoundCard.Value = True Then否则指向声卡 nEquip = 1 Else否则声音文件转向耳卖 nEquip = 2End If指定好设备后,开始向指定设备开始录音V.StartRecording nEquip, False如果有错误,则显示错误信息If V.ErrorNu米ber Thenshow米sg V.ErrorDescribe退出过程Exit SubEnd If厘米dStartOrStopRecord.Caption =

46、 停止厘米dStartOrStopPlay.Enabled = FalseElseIf 厘米dStartOrStopRecord.Caption = 停止 Then停止录音V.Stop关闭当前声音文件V.CloseWaveFile厘米dStartOrStopRecord.Caption = 录音If c千米onitorSilence.Value = 0 Then 厘米dStartOrStopPlay.Enabled = True when 米onitoring silence ,we can not play wave fileEnd IfEnd SubPrivate Sub Co米米and1

47、_Click()关闭对象V.CloseEnd SubPrivate Sub For米_Load()各种设备的 初始化Gatdibz = False进行初使化 V.Initialize For i = 1 To V.LineCount对各条线路进行初使化V.SetCurLine (i - 1)加入线路选择中去厘米bLines.AddIte米 V.LineNa米eNext iIf V.LineCount 0 Then如果系统内有线路产生,则指向第一条线路 V.SetCurLine 0 the default line is the nu米ber 0厘米bLines.Text = V.LineNa米

48、e打开此线路V.OpenIf V.LineType = 2 Or V.Operate米ode = 1 Then 该条线路是语音猫 Voice 米ode厘米bWaveFor米at.ListIndex = 0厘米bWaveFor米at.Enabled = FalseElseIf V.LineType = 3 Then 该线路是语音卡 Voice board厘米bWaveFor米at.ListIndex = 1厘米bWaveFor米at.Enabled = TrueEnd IfEnd If如果当前工作模式是TAPI形式:则If V.Operate米ode = 0 Then传真功能无法使用厘米dSen

49、dFax.Enabled = False厘米dReceiveFax.Enabled = False米e.Caption = 米e.Caption + 当前工作模式:TAPIElse显示当前猫的 工作模式米e.Caption = 米e.Caption + 当前工作模式:AT CO米米ANDEnd If显示当前日期信息StatusBar1.Panels(2).Text = 当前日期: & DateEnd Sub如果关闭系统,则关闭资源Private Sub For米_Unload(Cancel As Integer)V.ShutDownEnd SubPrivate Sub OptLine_Clic

50、k()如果当前状态处于联接状态的 情况下If CallState = CALL_STATE_CONNECTED Then厘米dStartOrStopPlay.Enabled = False厘米dStartOrStopRecord.Enabled = Falsec千米onitorSilence.Enabled = FalseEnd IfEnd SubPrivate Sub optPlayDigitsFiles_Click()txtDigits.Enabled = optPlayDigitsFiles.ValueEnd Sub声卡放音功能Private Sub optSoundCard_Click

51、()If optSoundCard.Value Then If Dir(record.wav) Then 厘米dStartOrStopPlay.Enabled = True End If厘米dStartOrStopRecord.Enabled = Truec千米onitorSilence.Enabled = TrueEnd IfEnd SubPrivate Sub Text1_Change()End SubPrivate Sub txtTelNu米_Change()厘米dDial.Enabled = TrueEnd Sub线路忙的 功能的 显示Private Sub v_Busy(ByVal

52、LineIndex As Integer)show米sg CStr(LineIndex) + Busy厘米dDrop.Enabled = True厘米dGenerateDigits.Enabled = TrueEnd Sub挂断电话或忙音提示功能Private Sub v_BusyOrShutdown(ByVal LineIndex As Long)show米sg CStr(LineIndex) + Busy or shutdownEnd Sub来电显示功能,callerid就是电话号码Private Sub V_CallerID(ByVal LineIndex As Integer, ByV

53、al CallerID As String)show米sg CallerID: & CallerIDEnd Sub电话已经联接时产生以下事件,将显示哪条线路被接通.Private Sub V_Connected(ByVal LineIndex As Integer, ByVal fInCo米ing As Boolean)V.SetCurLine LineIndexIf fInCo米ing Thenshow米sg CStr(LineIndex) + Line connected after answering( + V.LineNa米e + )Else show米sg CStr(LineIndex) + line connected( + V.LineNa米e + )End If厘米dDrop.Enabled = TrueIf OptLine.Value ThenIf Not (Dir(record.wav) = And optPlayFileRecorded.Value) Then 厘米dStartOr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论