




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1摘 要作为目前CTI行业是一个热门的方向,所谓CTI就是计算机电话集成,像我们的114查询台、168台、电话银行、防伪查询等等,都属于CTI应用。这种应用的好处是不言而喻的,许多单位都想使用CTI系统来解决他们企业内部一些无法解决的一些问题。大丰城市规划局也不例外。大丰城市规划局最近使用了城市规划及土地管理业务系统,与以前手工作业比,电脑信息化给他们带来了很大的便利,工作的方式有着明显的改变,工作效率大大的提高了。但是仍存在了一些不足,系统不能够支持手机用户发送短消息功能,同时也不支持远程电话语音应答功能。需要实现一个像168查询台类似的系统,要能具有语音应答、来电显示、电话录音与放音、收发传真、转人工服务等功能,同时具备向手机用户发送短消息功能。如果没有这些功能的话,城市规划局的用户及建设单位不能及时了解到他们想要的信息。首先要说明的是,CTI系统是一个热门的方向,像168,114等这些地方都是用专业的电话语音设备-语音卡来完成的,其成本投入非常高,这也就是目前大多数企业无法得以实施的主要因素。于是我试想用语音猫来解决这个问题,经过我进行了大量的实验得出这样的结论,在电话语音要求不太高的场合,我们可以用30元左右的普通猫来代替语音卡,其实语音猫的功能是非常强大的,不仅能够上网,其实有好多功能我们不少人是不知道的。面临语音卡非常昂贵的问题,于是我想采用普通的语音猫来编写 VB程序来解决以上所面临的问题。我首先分析出本系统的功能为以下一些功能:手工接听电话、打电话、挂断电话、语音应答、来电显示、电话录音与放音、转人工服务、收发短消息、收发传真等功能。然后将各项功能进行各自单独设计实验,然后进行组合,也就是我们经常所说的模块化的设计组合各个模块就变成了我们想要的软件。本系统将采用的是Visual Basic 6.0作为开发平台,利用VB特有的可视化设计将系统的界面做到人性化,美观化;利用 VB 特有的支持串口强大的开发能力与VB 本身提供 MSCOMM1控件的功能能很方便的来实现利用串口编程对语音猫2的控制。从长远利益和发展的观点考虑,对现行的信息管理系统的功能进行适当的改进是十分必要的。通过计算机的先进技术实现工作流程的自动化,不仅能有效的减少工作人员的工作量,便他们从烦琐的手工劳动中解脱出来,提高工作效率、工作质量和节省资源。本软件严德睿来完成,由于开发难度大、同时目前对CTI行业资料不是很多,所以设计出的程序肯定有很多不足之处,需要在使用的过程中对它进行不断改进与完善,使设计出来的软件能更好地运用到实际的工作当中去。在此开发过程中得到了刘同胜老师的悉心指导与开发技术方面的支持。关键字电话应答;CTI;Visual Basic; Mscomm1;TAPI;语音猫;串口;RS-232;电话语音集成.3目 录摘要及关键词第一章: 引言 51.1 本课题的研究意义 51.2 本论文的目的、内容、及作者的主要贡献5第二章:研究的现状及设计目标 52.1 现行研究存在的问题及解决的方法 52.2 本课题要达到的设计目标6第三章:要解决的几个关键问题63.1 设计中要解决的问题 63.2 具体实现中采用的关键技术及复杂性分析 6第四章:系统的实现技术 94.1 各模块详述系统各部分的实现方法 94.2 程序流程 10第五章:性能的测试与分析 355.1 测试实例的研究与选择355.2 测试环境与测试条件 365.3 实例测试375.4 性能分析37第六章:结束语 37致谢 37参考文献374第一章:引言1.1本课题的研究意义大丰城市规划局最近使用了城市规划及土地管理业务系统,与以前手工作业比,电脑信息化给他们带来了很大的便利,工作的方式有着明显的改变,工作效率大大的提高了。但是仍存在了一些不足,系统不能够支持手机用户发送短消息功能,同时也不支持远程电话语音应答功能。需要实现一个像168查询台类似的系统,要能具有语音应答、来电显示、电话录音与放音、收发传真、转人工服务等功能,同时具备向手机用户发送短消息功能。如果没有这些功能的话,城市规划局的用户及建设单位不能及时了解到他们想要的信息。1.2 本论文的目的、内容、及作者的主要贡献系统能为方便用户及建设单位,系统应能支持手机用户发送短消息功能,同时支持远程电话语单应答功能。实现和168查询台类似的系统,具有语音应答功能。实现和168查询台类似的系统,具有电话手工接听功能、电话手工拨打功能、电话手工挂断、语音应答、来电显示、电话录音与放音、转人工服务、收发传真等功能,同时具备向手机用户发送短消息功能,这样会大减轻用户及建设单位,让他们能及时了解到他们想要的信息。作者解决了从各个不同的角度增进了局与用户的沟通,及时互相的了解一些存在的问题以及及时的掌握信息,以便及时的解决与改进. 第二章:研究的现状及设计目标2.1现行研究存在的问题及解决的方法要想能够开发出CTI电话语音应用系统(包括来电显示、语音应答、语音传送,人工坐席,包括发送短消息功能),通常有几种方式,最广泛使用的是语音卡,用它开发出来的系统非常稳定,像现在的168,114,12315等等这些应用都是用语音卡开发的,当然他也有缺点,就是价格非常高。还有一种方式,就是用我们平时所说的语音猫,也就是调制解调器,可能大家对调制解调器还不太熟悉其功能,他主要作用是将数字信号和模拟信号之间互相转换。可能大家以为语音猫只能上上网,其实错了。语音猫的功能非常强大。上网功能,我们只是用了他其中之一的很小的一个功能而已,他还有很多功能我们没有能够发现。比如我们这次研究的对象就是语音猫,实现的功能就是CTI的所有的功能。5要能够用VB+语音猫开发本系统,除了上面说的要对串行通信需要一定了解,同时也需要对语音猫的AT命令或者tapi函数也要非常熟悉。首先要说明的是,CTI系统是一个热门的方向,像168,114等这些地方都是用专业的电话语音设备-语音卡来完成的,其成本投入非常高,这也就是目前大多数企业无法得以实施的主要因素。于是我试想用语音猫来解决这个问题,经过我进行了大量的实验得出这样的结论,在电话语音要求不太高的场合,我们可以用30元左右的普通猫来代替语音卡,其实语音猫的功能是非常强大的,不仅能够上网,其实有好多功能我们不少人是不知道的。面临语音卡非常昂贵的问题,于是我想采用普通的语音猫来编写VB程序来解决以上所面临的问题。我首先分析出本系统的功能为以下一些功能:手工接听电话、打电话、挂断电话、语音应答、来电显示、电话录音与放音、转人工服务、收发短消息、收发传真等功能。然后将各项功能进行各自单独设计实验,然后进行组合,也就是我们经常所说的模块化的设计组合各个模块就变成了我们想要的软件。本系统将采用的是VisualBasic6.0作为开发平台,利用VB特有的可视化设计将系统的界面做到人性化,美观化;利用VB特有的支持串口强大的开发能力与VB本身提供MSCOMM1控件的功能能很方便的来实现利用串口编程对语音猫的控制。2.2 本课题要达到的设计目标本课题要达到以下几个功能:1.来电显示2.来电应答 3.打电话4.放音5.录音6.发短消息,7收发传真.第三章:要解决的几个关键问题3.1设计中要解决的问题要实现本系统,就必须用语音猫+vb解决以下几个问题:1.来电显示 2.来电应答 3.打电话4.放音5.录音6.发短消息,7收发传真.3.2具体实现中采用的关键技术及复杂性分析要能用语音猫来实现上述想实现的功能,我们首先要对语音猫和串行通信有着深刻的了解,同时要对语音猫的AT命令与TAPI函数要非常的了解,可能大家都要问,什么是AT命令呢?和人一样,人与人交流最主要是是用语言来交流,6那么我们要和语音猫交流的话,就要我们人必须要懂语音猫能看得懂的AT命令。也就是说,语音猫只能看得懂AT命令。什么叫TAPI呢?TAPI是指与电话有关的API函数,下面我就列出了所有的TAPI函数。我进行CTI系统进行开发时,采用自上而下软件开发方法,一个大系统分成许多模块来开发的。也就是说,要实现一个大目标,我们把他分成许多个小模块来实现的。我把本系统为成了以下几个小模块:1.来电显示2.来电应答 3.打电话4.放音5.录音6.发短消息,7收发传真.下面就让我详细说明这些功能设计的步骤。TAPI函数简介:OptionExplicit 所有变量都必须先定义后使用PublicConstLINEDIGITMODE_DTMF=&H2线路为数字模式PublicConstTAPIVERSION=&H10004TAPI函数的版本号为:1.04PublicDeclareFunctionlineMonitorDigitsLibTapi32(ByValhCallAsLong,ByValdwDigitModesAsLong)AsLongPublicDeclareFunctionlineGenerateDigitsLibTapi32(ByValhCallAs Long, ByVal dwDigitMode As Long, ByVal lpszDigits As String, ByValdwDurationAsLong)AsLong得到来电号码、来电时间等信息PublicDeclareFunctionlineGetCallInfoLibTapi32(ByValhCallAsLong,ByReflpCallInfAslineCallInfo)AsLong电话线路初使化PublicDeclareFunctionlineInitializeLibTapi32(ByRefhTAPIAsLong,ByValhInstAsLong,ByValfnPtrAsLong,ByRefszAppNameAsLong,ByRefdwNumLinesAsLong)AsLongPublicDeclareFunctionlineNegotiateAPIVersionLibTapi32(ByValhTAPIAsLong,ByValdwDeviceIDAsLong,ByValdwAPILowVersionAsLong,ByVal dwAPIHighVersion As Long, ByRef lpdwAPIVersion As Long, ByReflpExtensionIDAslineextensionid)AsLong7打开电话线路PublicDeclareFunctionlineOpenLibTapi32(ByValhLineAppAsLong,ByValdwDeviceIDAsLong,ByReflphLineAsLong,ByValdwAPIVersionAsLong,ByValdwExtVersionAsLong,ByRefdwCallbackInstanceAsLong,ByVal dwPrivileges As Long, ByVal dwMediaModes As Long, ByReflpCallParamsAsLong)AsLongPublic Declare Function lineGetDevCaps Lib Tapi32 (ByValhLineAppAsLong,ByValdwDeviceIDAsLong,ByValdwAPIVersionAsLong,ByValdwExtVersionAsLong,ByReflpLineDevCapsAslinedevcaps)AsLong线路设置特定的状态信息PublicDeclareFunctionlineSetStatusMessagesLibTapi32(ByValhLineAsLong,ByValdwLineStatesAsLong,ByValdwAddressStatesAsLong)AsLong打电话PublicDeclareFunctionlineMakeCallLibTapi32(ByValhLineAsLong, ByRef lphCall As Long, ByVal lpszDestAddress As String, ByValdwCountryCodeAsLong,ByVallpCallParamsAsLong)AsLong挂电话PublicDeclareFunctionlineDropLibTapi32(ByValhCallAsLong,ByVallpsUserUserInfoAsString,ByValdwSizeAsLong)AsLong挂电话,释放资源PublicDeclareFunctionlineShutdownLibTapi32(ByValhLineAppAsLong) AsLong应答电话PublicDeclareFunctionlineAnswerLibTapi32(ByValhCallAsLong,ByReflpsUserUserInfoAsString,ByValdwSizeAsLong)AsLong得到是哪一条线路正在使用,获得一个ID号Public Declare Function lineGetID Lib Tapi32 (ByVal hLine AsLong,ByValdwAddressIDAsLong,ByValhCallAsLong,ByValdwSelect8AsLong,ByReflpDeviceAsvarString,ByVallpszDeviceClassAsString)AsLongPublic Declare Function lineDeallocateCall Lib Tapi32 (ByValhCallAsLong)AsLong第四章:系统的实现技术4.1模块详述系统各部分的实现方法本人最初的想法是对大丰城市规划及土地管理业务系统的缺陷的一个补充,软件要能实现CTI的如下功能:1.来电显示 2.来电应答 3.打电话 4.放音 5.录音6.收发短消息7收发传真.其功能详细描述如下:来电第二声响铃(电信局送来电显示信号)我们这时要去读MODERM内存信息,就是我们要的电话号码,当然还包括来电时间.程序启动后,首先初始化猫收发短消息 收发传真 来电去电处理收传真 发传真去电 挂断发短消息收短消息 来电接听录音、放音来电第一声响铃(没有任何信号)942程序流程在设计之前所要强调的是:要购买一个外置式的猫,同时电话还要开通家家E功能。为什么要开通家家E功能,因为我们发送的短消息是通过家家E的功能来与手机、小灵通相互联系的。有了这些准备后,将猫接在计算机的串口上,正确地装好驱动程序。10来电显示功能的实现(首先要向电信局开通来电显示功能):PrivateSubV_CallerID(ByValLineIndexAsInteger,ByValCallerIDAsString)当电话来的时候响应,一般在来电的第二声电信局送电话号码信息到电话机上面。showMsgCallerID:&CallerID Callerid就是指的来电号码EndSub过程结束Private Sub V_Connected(ByVal LineIndex As Integer, ByValfInComingAsBoolean)当电话接通时,产生该事件,这时将显示哪条线路,有没有来电。V.SetCurLineLineIndex程序设定哪条线路将接通IffInComingThen如果有哪条线路被接通,则显示哪条线路被接通。showMsg CStr(LineIndex) + Line connected after answering( +11V.LineName+)显示哪一条线路被接通ElseshowMsgCStr(LineIndex)+lineconnected(+V.LineName+)EndIfcmdDrop.Enabled=True挂断按钮生效If OptLine.Value Then如果录音是否被选中,则去检测声音文件是否存在,注明:dir是查找文件的意思.If Not (Dir(record.wav) = And optPlayFileRecorded.Value)ThencmdStartOrStopPlay.Enabled=TrueEndIf播放或停止按钮有效cmdStartOrStopRecord.Enabled=True播放或停止按钮有效ckMonitorSilence.Enabled=True静默按钮有效EndIfckMonitorDigit.Enabled=True 检测按键有效cmdGatherDigits.Enabled=True收集按键信息按钮有效framGatherDigits.Enabled=True收集按键信息框架有效ckUseSpeakerphone.Enabled=True 卖克风有效cmdGenerateDigits.Enabled=True一般按键有效CallState=CALL_STATE_CONNECTED当前线路状态是已联接EndSubEnumCALL_STATE定义枚举变量类型CALL_STATE,用来标记当前线路的状态。CALL_STATE_IDLE空闲CALL_STATE_DIALING正在拨号CALL_STATE_CONNECTED电话接通EndEnum结束枚举Private CallState As CALL_STATE 将CallState定义为CALL_STATE12类型的变量PrivateSubckMonitorDigit_Click()检测按键单击产生以下事件。V.MonitorDigit ckMonitorDigit.Value 是 否 检 测 按 键 ,Ckmonitordigit.value有两种值,checked或uncheckedEndSubPrivateSubckMonitorSilence_Click()检测静默IfckMonitorSilence.ValueThen如果静默被选中则V.MonitorSilenceCLng(txtTimeForSilence.Text)则指定期静默时间,时间由txttimeforsilence文本内的内容决定。cmdStartOrStopPlay.Enabled=False开始或停止按钮失效。Else否则V.MonitorSilence0静默0秒钟cmdStartOrStopPlay.Enabled=True开始或停止按钮有效。EndIfEndSub结束过程PrivateSubckUseSpeakerphone_Click()ckusespeakerphone一点击就触发以下事件:V.EnableSpeakerPhoneIIf(ckUseSpeakerphone.Value=1,True,False)是否允许耳卖有效,这里iif就相当于 if(ckusespeakerphone.value=1thenv.enabelspeakerphone=true可以用耳卖讲话elsev.enabelspeakerphone=flase不可以用耳卖讲话endifIfV.ErrorNumberThenshowMsgV.ErrorDescribe如果出现错误,则显示错误原因13EndSubPrivateSubcmbLines_Click()选择线路V.Close则关闭当前联接V.SetCurLine(cmbLines.ListIndex)设置当前线路为cmblines.listindexV.Open打开刚刚选择的线路cmdDial.Enabled=True拨打电话按钮有效V.LineForShowWave=cmbLines.ListIndex当前播放声音指向当前线路IfV.ErrorNumber0Then如果有错误产生,则显示错误showMsgV.ErrorDescribeEndIf调用挂断电话程序cmdDrop_Click以下程序是判断语音猫还是语音卡.IfV.LineType=2OrV.OperateMode=1Then语猫VoicemodemcmbWaveFormat.ListIndex=0设置指定的语音格式cmbWaveFormat.Enabled=Falsecmbwaveformat选择框无效ElseIfV.LineType=3Then语音卡VoiceboardcmbWaveFormat.ListIndex=1设置指定语音格式cmbWaveFormat.Enabled=Truecmbwaveformat有效14EndIfEndSub接听电话效果PrivateSubcmdAnswer_Click()开始接听电话V.Answer设置当前状态为电话接通状态CallState=CALL_STATE_CONNECTEDEndSub取消传真设置PrivateSubcmdCancelFax_Click()取消传真V.CancelFaxEndSub打电话功能实现PrivateSubcmdDial_Click()等待连接V.SetWaitTimeForConnection60CLng(txtConnectTimeout.Text)打相应电话号码,txttelnum.text里面存放的就是要拨打的电话号码。V.DialtxtTelNum.Text设置当前状态为打电话状态CallState=CALL_STATE_DIALING电话挂断按钮为真cmdDrop.Enabled=TrueEndSub挂断电话功能实现PrivateSubcmdDrop_Click()挂断电话V.Drop15挂断电话按钮变成灰色cmdDrop.Enabled=FalseIfOptLine.ValueThencmdStartOrStopPlay.Enabled=False播放或停止按钮无效cmdStartOrStopRecord.Enabled=False录音或停止按钮无效ckMonitorSilence.Enabled=False静默功能无效EndIfckMonitorDigit.Enabled=False检测按键功能无效cmdGatherDigits.Enabled=FalseframGatherDigits.Enabled=FalseCallState=CALL_STATE_IDLE致当前线路状态空闲cmdGenerateDigits.Enabled=FalseckUseSpeakerphone.Enabled=FalseEndSub收集当前按钮按键信息PrivateSubcmdGatherDigits_Click()收集按键信息收集的数量存入在txtdigitscount.text中V.GatherDigitsCInt(txtDigitsCount.Text),收集终止按键信息txtTerminateDigit, CLng(txtFirstDigitTimeout),CLng(txtInterTimeout)EndSub一般按键信息收集功能PrivateSubcmdGenerateDigits_Click()收集按键信息V.GenerateDigitstxtDigitsToGenerate.Text挂断电话有效cmdDrop.Enabled=TrueEndSub16接受传真功能实现PrivateSubcmdReceiveFax_Click()将接受的传真保存到期d:faxreceived.tif文件中V.ReceiveFaxfaxreceived.tifD:faxreceived.tifIfV.ErrorNumberThen有错误信息不等于0,则也就是说有错误产生显示错误信息showMsgV.ErrorDescribeEndIfEndSub发送传送功能:PrivateSubcmdSendFax_Click()如果电话状态是空闲则接受传真IfCallState=CALL_STATE_IDLEThenV.SendFaxhello.tif,txtTelNum.Text 将“hello.tif”文件送到指定的电话号码中,txtelnum.text存入是电话号码D:faxfaxCodetookit.tif,6211478Else如没有电话号码,则表示不发送传真。V.SendFaxhello.tif,EndIf如果有错误产生,则显示错误提示.IfV.ErrorNumberThenshowMsgV.ErrorDescribeEndIf允许挂断电话cmdDrop.Enabled=TrueEndSub17开始播放或停止播放功能PrivateSubcmdStartOrStopPlay_Click()IfcmdStartOrStopPlay.Caption=播放Then现在将要开始播放语音 IfoptPlayFileRecorded.ValueThenPlaythefilerecorded如果播放语音按钮被选中,则开始播放记录V.OpenWaveFilerecord.wav打开record.wav文件进行播放如果有错误产生,则显示错误IfV.ErrorNumberThenshowMsgV.ErrorDescribe退出过程ExitSubEndIfElse播放一些数字,合成数字Playsomedigits,eachdigithasa correspondingwavefile产生一个新的临时文件V.NewWaveFiledigits.wav,0,0,0如果有错误,则显示错误原因IfV.ErrorNumberThenshowMsgV.ErrorDescribe退出过程ExitSubEndIfDimDigitAsString,iAsInteger定义两个变量,一个要存放要读的数字信息,一个存入数字的个数.Fori=1ToLen(txtDigits.Text)遍列整个digit18Digit=Mid(txtDigits.Text,i,1)获得每一个数字判断是否为数字,如果是的话:IfIsNumeric(Digit)Then就追加书写文件V.AppendWaveFileDigit+.wav如果有错误,则显示错误IfV.ErrorNumberThenshowMsgV.ErrorDescribeExitSub退出过程EndIfEndIf一个做完后,执行下一个NextI当我们做完后,我们将文件的指向要指向文件的头。V.SeekWaveFile 0 after weappended all the wave file,thecurrentpositionofthewavefilearemovedtothetailofthefile,soweneedtoseekittotheheadofthefile如果有错误产生,则显示错误如果有错误,则显示错误信息IfV.ErrorNumberThenshowMsgV.ErrorDescribe退出过程ExitSubEndIfEndIfDimnEquipAsInteger定义设备文件19IfOptLine.Value=TrueThen0表示线路nEquip=01表示声卡ElseIfoptSoundCard.Value=TrueThennEquip=1Else2表示耳卖nEquip=2EndIf指定好播放设备后,我们开始向指定的设备开始播放文件V.StartPlayingnEquip,False如果有错误,则显示错误信息IfV.ErrorNumberThenshowMsgV.ErrorDescribe退出过程ExitSubEndIf开始/停止播放变为停止cmdStartOrStopPlay.Caption=停止开始/停止录音按钮失效cmdStartOrStopRecord.Enabled=False如果开始/停止播放按钮为停止,则开始播放ElseIfcmdStartOrStopPlay.Caption=停止Thennowstopplaying停止现在正在播放的内容V.Stop开始/停止播放按钮变成播放cmdStartOrStopPlay.Caption=播放开始/停止录音按钮有效20cmdStartOrStopRecord.Enabled=TrueEndIfEndSub录音功能实现PrivateSubcmdStartOrStopRecord_Click()DimResultAsInteger定义结束变量IfcmdStartOrStopRecord.Caption=录音Then如此按钮的值为开始录音的话IfcmbWaveFormat.ListIndex=0Then如果格式为第一种格式的话,产生一个格式为1,8000,16的新文件.V.NewWaveFilerecord.wav,1,8000,16如果格式为第二种的话,产生一个格式为1,8000,8的新文件。ElseIfcmbWaveFormat.ListIndex=1ThenV.NewWaveFilerecord.wav,1,8000,8如果格式为第三种的话,产生一个格式为1,11025,8的新文件。ElseIfcmbWaveFormat.ListIndex=2ThenV.NewWaveFilerecord.wav,1,11025,8EndIf如果有错误产生,则显示错误。IfV.ErrorNumberThenshowMsgV.ErrorDescribeExitSubEndIf定义设备名称DimnEquipAsInteger如果线路选中,则IfOptLine.Value=TrueThen21设备名称为0,即为线路nEquip=0ElseIfoptSoundCard.Value=TrueThen否则指向声卡nEquip=1Else否则声音文件转向耳卖nEquip=2EndIf指定好设备后,开始向指定设备开始录音V.StartRecordingnEquip,False如果有错误,则显示错误信息IfV.ErrorNumberThenshowMsgV.ErrorDescribe退出过程ExitSubEndIfcmdStartOrStopRecord.Caption=停止cmdStartOrStopPlay.Enabled=FalseElseIfcmdStartOrStopRecord.Caption=停止Then停止录音V.Stop关闭当前声音文件V.CloseWaveFilecmdStartOrStopRecord.Caption=录音IfckMonitorSilence.Value=0ThencmdStartOrStopPlay.Enabled=Truewhenmonitoringsilence,we cannotplaywavefileEndIfEndSub22PrivateSubCommand1_Click()关闭对象V.CloseEndSubPrivateSubForm_Load()各种设备的初始化Gatdibz=False进行初使化V.InitializeFori=1ToV.LineCount对各条线路进行初使化V.SetCurLine(i-1)加入线路选择中去cmbLines.AddItemV.LineNameNextiIfV.LineCount0Then如果系统内有线路产生,则指向第一条线路V.SetCurLine0 thedefaultlineisthenumber0cmbLines.Text=V.LineName打开此线路V.OpenIf V.LineType = 2 Or V.OperateMode = 1 Then 该条线路是语音猫VoicemodecmbWaveFormat.ListIndex=0cmbWaveFormat.Enabled=FalseElseIfV.LineType=3Then该线路是语音卡VoiceboardcmbWaveFormat.ListIndex=1cmbWaveFormat.Enabled=TrueEndIf23EndIf如果当前工作模式是TAPI形式:则IfV.OperateMode=0Then传真功能无法使用cmdSendFax.Enabled=FalsecmdReceiveFax.Enabled=FalseMe.Caption=Me.Caption+当前工作模式:TAPIElse显示当前猫的工作模式Me.Caption=Me.Caption+当前工作模式:ATCOMMANDEndIf显示当前日期信息StatusBar1.Panels(2).Text=当前日期:&DateEndSub如果关闭系统,则关闭资源PrivateSubForm_Unload(CancelAsInteger)V.ShutDownEndSubPrivateSubOptLine_Click()如果当前状态处于联接状态的情况下IfCallState=CALL_STATE_CONNECTEDThencmdStartOrStopPlay.Enabled=FalsecmdStartOrStopRecord.Enabled=FalseckMonitorSilence.Enabled=FalseEndIfEndSubPrivateSuboptPlayDigitsFiles_Click()txtDigits.Enabled=optPlayDigitsFiles.ValueEndSub24声卡放音功能PrivateSuboptSoundCard_Click()IfoptSoundCard.ValueThenIfDir(record.wav)ThencmdStartOrStopPlay.Enabled=TrueEndIfcmdStartOrStopRecord.Enabled=TrueckMonitorSilence.Enabled=TrueEndIfEndSubPrivateSubText1_Change()EndSubPrivateSubtxtTelNum_Change()cmdDial.Enabled=TrueEndSub线路忙的功能的显示PrivateSubv_Busy(ByValLineIndexAsInteger)showMsgCStr(LineIndex)+BusycmdDrop.Enabled=TruecmdGenerateDigits.Enabled=TrueEndSub挂断电话或忙音提示功能PrivateSubv_BusyOrShutdown(ByValLineIndexAsLong)showMsgCStr(LineIndex)+BusyorshutdownEndSub来电显示功能,callerid就是电话号码PrivateSubV_CallerID(ByValLineIndexAsInteger,ByValCallerIDAsString)showMsgCallerID:&CallerID25EndSub电话已经联接时产生以下事件,将显示哪条线路被接通。PrivateSubV_Connected(ByValLineIndexAsInteger,ByValfInComingAsBoolean)V.SetCurLineLineIndexIffInComingThenshowMsg CStr(LineIndex) + Line connected after answering( +V.LineName+)ElseshowMsgCStr(LineIndex)+lineconnected(+V.LineName+)EndIfcmdDrop.Enabled=TrueIfOptLine.ValueThenIf Not (Dir(record.wav) = And optPlayFileRecorded.Value)ThencmdStartOrStopPlay.Enabled=TrueEndIfcmdStartOrStopRecord.Enabled=TrueckMonitorSilence.Enabled=TrueEndIfckMonitorDigit.Enabled=TruecmdGatherDigits.Enabled=TrueframGatherDigits.Enabled=TrueckUseSpeakerphone.Enabled=TruecmdGenerateDigits.Enabled=TrueCallState=CALL_STATE_CONNECTEDEndSub产生侦察到的数字信息,按什么键就显示什么键PrivateSubV_DigitDetected(ByValLineIndexAsLong,ByValDigit26AsString)txtInfo.Text = txtInfo.Text + Chr(13) + Chr(10) + DigitDetected:&DigitEndSub不连接事件PrivateSubV_Disconnected(ByValLineIndexAsLong)showMsgDisconnectedV.Stop停止播放声音文件V.CloseWaveFile关闭声音文件V.Drop挂断电话EndSub传真结果信息,产生相应的信息PrivateSubv_FaxResult(ByValLineIndexAsLong,ByValResultAsLong,ByValResultDesAsString)showMsgResultDesEndSub传真的状态,显示信息PrivateSubv_FaxStatus(ByValLineIndexAsLong,ByValStatusIDAsLong,ByValStatusDesAsString)showMsgStatusDesEndSub传真信息是否收集到,如果有则产生提示信息PrivateSubv_FaxtoneDetected(ByValLineIndexAsLong)showMsgFaxtonedetected!EndSub收集并显示按键信息功能27Private Sub V_GatherDigits(ByVal LineIndex As Integer, ByValDigitsAsString,ByValResultAsInteger)IfResult=1Then完成按键信息并显示出来showMsgFinishGatheringDigits:&DigitsElseIfResult=2ThenshowMsgFinishGatheringDigits:&Digits3表示收集时超时ElseIfResult=3ThenshowMsgTimeoutwhileGatheringDigits显示错误信息“收集按键时超时”ElseIfResult=4ThenshowMsgTimeoutwhileGatheringDigits显示错误信息“收集按键时超时”EndIfEndSub播放完成产生此事件PrivateSubV_PlayDone(ByValLineIndexAsLong)V.SetCurLineLineIndex指定播放的线路V.CloseWaveFile关闭声音文件showMsg播放完毕cmdStartOrStopPlay.Caption=播放cmdStartOrStopRecord.Enabled=True开始或停止录音的按钮有效EndSubPrivateSubV_RingBack(ByValLineIndexAsLong,ByValnRingAsLong)showMsgRingBack+CStr(nRing)28显示几声回铃声EndSub当有振铃时产生此信息PrivateSubV_Ringing(ByValLineIndexAsInteger,ByValnumRingAsInteger)cmdAnswer.Enabled=True显示第几次振铃showMsgthe+CStr(numRing)+RingEndSubShowmsg函数,strmsg将要显示的内容SubshowMsg(strMsgAsString)txtInfo.Text=txtInfo.Text+Chr(13)+Chr(10)+strMsg选中整个文本txtInfo.SelStart=Len(txtInfo.Text)EndSub当静默时产生此事件,提示静默信息PrivateSubV_Silence(ByValLineIndexAsLong)showMsgSilenceDetected显示静默已经检测到了EndSub当按键超时时产生此事件,这时会提示您在拨号时超时.PrivateSubV_WaitConnectionTimeOut(ByValLineIndexAsInteger)showMsgTimoutwhileDialing显示电话无人接听EndSub当线路连接时产生此事件。Private Sub VoiceAngel1_Connected(ByVal LineIndex As Integer,ByValfInComingAsBoolean)EndSub29dlgSetupcontainsafewtrivialitems(suchaswhichvoicecardtouse)andstores/retrievesthemfrom:HKEY_CURRENT_USERSoftwareVB and VBA ProgramSettingsVB-TAPISettingsOptionExplicitCenter the dialogon the main form and get the settings from theregistry.PrivateSubForm_Load()窗口在装载前产生以下事件Me.Top=frmMain.Top+(frmMain.Height-Me.Height)/2)让窗口显示在屏幕的中间Me.Left=frmMain.Left+(frmMain.Width-M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年延安新东康复医院招聘笔试真题
- 深圳市福田区教育系统选聘教师考试真题2024
- 济宁市嘉祥县事业单位招聘考试真题2024
- 邳州一模数学试卷
- 盘龙区统测高二数学试卷
- 2025广西靖西口岸投资管理有限公司招聘4人笔试参考题库附答案解析
- 平邑县期中数学试卷
- 盘龙区初一数学试卷
- 攀枝花法院2025年公开招聘聘用制书记员(100人)考试参考题库附答案解析
- 七年级数学点线面体的认识试卷及答案
- 肺康复专题讲座
- 2025年医师定期考核业务水平测评理论考试(公共卫生)历年参考题库含答案详解(5套)
- 2025年秋季开学教师大会上教学副校长讲话:回到课堂的原点走向教学的深处
- 2025事业单位招聘考试时事政治考试题库及答案(考点梳理)
- 2025年发展对象培训考试试题(含答案)
- 亚马逊运营每周工作汇报
- 2025年少先队知识竞赛试题库附答案
- 2025年郑州人才公司面试题及答案
- 2025年跨境电子商务测试题及答案
- 防蚊培训课件
- 弥漫性大B细胞淋巴瘤病例讨论
评论
0/150
提交评论