modem如何继续拨号?向通讯方面的高手求救。(300分)

V

vfrog

Unregistered / Unconfirmed
GUEST, unregistred user!
现在有许多电话信息台,可以用电话参与答题活动。一般首先拨通这个信息电话(如16855168),然后根据语音提示用电话键盘进行操作回答问题,用电话操作非常容易。
我想编个程序,用modem拨号实现电话拨号,答题的功能。现在我用写串口的方式实现了拨号的功能,拨通电话后,却没办法让modem继续拨号答题。愁死我了。请各位高手多多指点。
高手们,快来抢分吧,如果你也不知道,请你帮我UP,多谢。
 
帮你up:)
 
多谢,UP
 
使用Modem的+++转义码可以将modem切换回命令状态,然后可以发拨号命令。
没有试过,你自己测试以下。
 
电话号码+逗号+功能键号
不知行不行
 
多谢,UP
 
这样啊,你可以换个思路。
用cool edit做0到9的、*、#号的DTMF拨号音,或者干脆你录这些拨号音好了。再在程序中调用。
这样做起程序来也方便啊。
 
read from a modem :
PortSpec : array[0..255] of char;
PortNo : Word;
success : Boolean;
error:integer;
begin
FillChar(PortSpec,Sizeof(PortSpec),#0);
StrPCopy(PortSpec,'Com1:19200,n,8,1');
PortSpec[3]:=Char(Ord(PortSpec[3])+Ord(PortNo));

if not BuildCommDCB(PortSpec,Mode) Then
Begin
//something wrong...
Exit;
End;

PortSpec[5]:=#0; { 'Com1:' }

Mode.Flags:=EV_RXCHAR + EV_EVENT2; { $1001 }

Com := CreateFile(PortSpec,GENERIC_READ or GENERIC_WRITE,
0, //* comm devices must be opened w/exclusive-access*/
Nil, //* no security attrs */
OPEN_EXISTING, //* comm devices must use OPEN_EXISTING*/
0, //* not overlapped I/O */
0 //* hTemplate must be NULL for comm devices */
);
if Com = INVALID_HANDLE_VALUE then Error := GetLastError;
Success := GetCommState(Com,Mode);

if not Success then // Handle the error.
begin

end;

Mode.BaudRate := 19200;
Mode.ByteSize := 8;
Mode.Parity := NOPARITY;
Mode.StopBits := ONESTOPBIT;//needed to rewrite on NT

Success := SetCommState(Com, Mode);

if not Success then // Handle the error.
begin

end;
end;

it opens the port. the "com" variable is dword.

You can clear comm buffer with
PurgeComm(Com,PURGE_RXCLEAR or PURGE_TXCLEAR);
and read with
Function ReadCh(Var Ch:Byte):dword;
var
n : dword;
Begin
Readfile(Com,ch,1,result,nil);
End;

 
各位高手,首先多谢各位的参与。有些问题大家共同参考。
ning_ning,我对MODEM的内部命令了解不多,不知道你说的方法怎样做。我试过用超级
终端的方式拨号,能拨通电话号码,但无法答题。请多指教。
ugvanxk你说的方法,可以一次拨号完成是可以的,可是我要在中途听语音提问后再回
答,我试过好像不行,这也是我想做却没办法的原因。
kifo你说的是否用音频录制拨号音,在程序中调用。我不太清楚你说的方式,能否详细
点。
duducat,你提供的这段程序似乎是用MODEM进行数据通讯,我看不太懂,如果可以的话,
能否介绍得详细些。现在最重要的是拨通电话后,怎样发送拨号音回答问题。
再次谢谢各位的参与,我真的很急,希望各位大家救救我。
 
我的问题在高人的指点下已经解决,问题关键是MODEM的相关命令。感谢各位的参与。
 
顶部