关于用MSComm开发来电显示程序(100分)

  • 主题发起人 主题发起人 kurt
  • 开始时间 开始时间
K

kurt

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.FormCreate(Sender: TObject);
begin
Mscomm1.InBufferCount :=0; // 清空接收缓冲区
Mscomm1.InputLen :=0; // Input读取整个缓冲区内容
Mscomm1.RThreshold :=1; // 每次接收到字符即产生OnComm事件
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Mscomm1.PortOpen :=true; // 打开串口
Mscomm1.DTREnable :=true; // 数据终端准备好
Mscomm1.RTSEnable :=true; // 请求发送
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Mscomm1.PortOpen :=false; // 关闭串口
Mscomm1.DTREnable :=false;
Mscomm1.RTSEnable :=false;
end;

procedure TForm1.MSComm1Comm(Sender: TObject);
var
recstr:Olevariant;
begin
if Mscomm1.CommEvent = 2 then
begin
recstr := Mscomm1.Input ;
Memo1.text := Memo1.Text+recstr;
end;
end;

为什么我在拨号时,Memo1中只显示RING,而没有来电信息,
与电话线和Modem有关吗?
我用公司内部分机测试,Modem是USRobotics 33.6k Voice Ext
请各位大虾帮忙,多谢!
 
1、确定你的Modem支持来电显示
方法:找注册表modem信息 , 是否有 [HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Class/Modem/0000/EnableCallerID]
"1"="at#vcid=1<cr>"
....数据。
2、打开来电显示:
发送上述的 EnableCallerID指令 ( at#vcid=1<cr> )

试试吧,我也没做过的。。。
 
1。不是所有moden的芯片都支持CID的,
2。需要你的电话线路提供CID的功能,
3。确认当地的CID采用的是FSK还是DTMF格式,
具体的打当地189询问一下。
 
还要在电信局给你的电话线开通来电显示功能才行吧
 
用分机可能不行,有些PBX会过滤信息。
 
真的有专家哦。
如果线路支持来电显示、Modem也支持,编程如何测知?是读端口数据流吗?不会吧?
 
来电显示是可以实现的,比如实达的猫就可以, 还要安装实达的软件, 不过我不知道
它是怎么实现的.
 
你的代码不能实现显示的
 
后退
顶部