赛
赛特
Unregistered / Unconfirmed
GUEST, unregistred user!
小弟在做毕业设计,是电话语音服务系统。
用的是TW8VID的语音卡,它提供的DLL文件里面有:TV_GETDTMFCHAR(通道号)函数,返回的是用户电话输入的字符的ASC码。但是在实现时总是不行。这块语音卡有两个通道,所以我是设计用两个线程来分别完成,把获取ASC码的操作放在线程里面的,不会是因为放在线程里就不行吧?
线程的代码:
procedure tongdao_f.Execute;
begin
{ Place thread code here }
while 1<2do
begin
if cs[0]=s_laidian then
begin
tv_hangupctrl(0);
cs[0]:=s_greet;
end;
if cs[0]=s_greet then
// 欢迎词状态
begin
tv_offhookctrl(0);
if tv_startplayfile(0,'voice/welcome.TW',0,0)<0 then
//播放欢迎词
begin
cs[0]:=s_laidian;
continue;
end
else
begin
cs[0]:=s_inputid;
end;
end;
if cs[0]=s_inputid then
// 输入学号状态
begin
if tv_startplayfile(0,'voice/INPUTIS.TW',0,0)<0 then
begin
cs[0]:=s_inputid;
continue;
end
else
begin
id_f:='';
//string 类型 用来接收用户输入
tv_flushdtmf(0);
//清空接收缓冲区
while tv_getdtmfchar(0)<>35do
//可以很顺利的执行到这里,说明上面是
begin
//没问题的,就是这while循环不对,指教
case tv_getdtmfchar(0) of
48:id_f:=id_f+'0';
49:id_f:=id_f+'1';
50:id_f:=id_f+'2';
51:id_f:=id_f+'3';
52:id_f:=id_f+'4';
53:id_f:=id_f+'5';
54:id_f:=id_f+'6';
55:id_f:=id_f+'7';
56:id_f:=id_f+'8';
57:id_f:=id_f+'9';
else
end;
end;
cs[0]:=s_inputpwd;
//在这里设置断点看id_f的值总是不对,为什么呢?
end;
end;
end;
end;
用的是TW8VID的语音卡,它提供的DLL文件里面有:TV_GETDTMFCHAR(通道号)函数,返回的是用户电话输入的字符的ASC码。但是在实现时总是不行。这块语音卡有两个通道,所以我是设计用两个线程来分别完成,把获取ASC码的操作放在线程里面的,不会是因为放在线程里就不行吧?
线程的代码:
procedure tongdao_f.Execute;
begin
{ Place thread code here }
while 1<2do
begin
if cs[0]=s_laidian then
begin
tv_hangupctrl(0);
cs[0]:=s_greet;
end;
if cs[0]=s_greet then
// 欢迎词状态
begin
tv_offhookctrl(0);
if tv_startplayfile(0,'voice/welcome.TW',0,0)<0 then
//播放欢迎词
begin
cs[0]:=s_laidian;
continue;
end
else
begin
cs[0]:=s_inputid;
end;
end;
if cs[0]=s_inputid then
// 输入学号状态
begin
if tv_startplayfile(0,'voice/INPUTIS.TW',0,0)<0 then
begin
cs[0]:=s_inputid;
continue;
end
else
begin
id_f:='';
//string 类型 用来接收用户输入
tv_flushdtmf(0);
//清空接收缓冲区
while tv_getdtmfchar(0)<>35do
//可以很顺利的执行到这里,说明上面是
begin
//没问题的,就是这while循环不对,指教
case tv_getdtmfchar(0) of
48:id_f:=id_f+'0';
49:id_f:=id_f+'1';
50:id_f:=id_f+'2';
51:id_f:=id_f+'3';
52:id_f:=id_f+'4';
53:id_f:=id_f+'5';
54:id_f:=id_f+'6';
55:id_f:=id_f+'7';
56:id_f:=id_f+'8';
57:id_f:=id_f+'9';
else
end;
end;
cs[0]:=s_inputpwd;
//在这里设置断点看id_f的值总是不对,为什么呢?
end;
end;
end;
end;