问题困惑,请教解答!在线等待,及时揭帖.
看了陈省 的那篇利用语音Modem实现电话点播和留言功能的文章,自己也想按照他的样子模拟一个,可是有个地方老报错,因为我对这两个控件的确不是很熟,所以也就无从下手解决,固在csdn里面来请求帮助.(两个控件为Apro控件中的TApdComPort和TApdTapiDevice.
我现在把我的做法和代码出现问题的地方帖出来,请各位帮忙解决,讨论.
步骤:
1.在窗体上放置一个TApdComport控件,设置其属性为AutoOpen:=False;TapiMode=tmOn;这里TapiMode 设定为tmOn ;各个通信参数用的是:
串口号:COM2,波特率: 9600,数据位:8,停止位:1,校验方式:无;(我都不知道要不要这些,反正那篇文章没有提到对通信参数的设置)
2.窗体上放置一个TApdTapiDevice控件,设定其Comport属性为前面的TApdComPort控件。设定ShowTapiDevices为True表明当调用控件的SelectDevice方法时,会显示一个选择TAPI设备的对话框。ShowPorts属性为false,表明调用SelectDevice方法不会显示串行口列表(这部分都不知道什么意思,也就依葫芦画瓢)
3.procedure TFrmMain.FormCreate(Sender: TObject);
var
begin
ApdTapiDevice.TrimSeconds := 5; //录音时有5秒静音就挂断
WindowState := wsMaximized;
end;
4.//监控电话
procedure TFrmMain.Btn_ExecuteClick(Sender: TObject);
begin
try
ApdTapiDevice.EnableVoice := True;
except
Application.MessageBox('当前设备不支持语音扩展', '错误', MB_OK);
end;
if ApdTapiDevice.EnableVoice then
begin
ApdTapiDevice.AutoAnswer;//各位请注意,这里就是我出现报错的地方;
LBSysInfo.Items.Add('answer:接听对方电话');
end
end;
5.
//挂断电话
procedure TFrmMain.ActionCancelExecute(Sender: TObject);
begin
ApdTapiDevice.CancelCall;
LBSysInfo.Items.Add('cancel:挂断对方电话');
end;
6.(这一部分也不知道什么意思)
如果系统中存在多个TAPI设备的时候,我们还可以选择使用哪一个来接听电话,下面是选择设备的方法:
//选择设备
procedure TFrmMain.ActionSelDevExecute(Sender: TObject);
begin
ApdTapiDevice.SelectDevice;
ApdTapiDevice.EnableVoice := True;
end;
7.
procedure TFrmMain.ApdTapiDeviceTapiConnect(Sender: TObject);
var
Path_Str : string;
begin
Path_Str := ExtractFilePath(Application.ExeName)+ 'Greeting.wav';
LBSysInfo.Items.Add('Connect:连接成功');
ApdTapiDevice.PlayWaveFile(Path_Str);//播放功能提示语音
LBSysInfo.Items.Add('connect:播放 greeting.wav');
end;
由于程序运行到步骤4那个报错的地方老不能得到解决,所以整个程序编制也就停下来了,希望各位帮忙跟贴.谢谢.我一直在线.
问题点数:50、回复次数:6Top




