有model来电显示经验的朋友请进(我的程序只能得到ring)---100%结贴率(200分)

  • 主题发起人 主题发起人 wonderxin
  • 开始时间 开始时间
W

wonderxin

Unregistered / Unconfirmed
GUEST, unregistred user!
model:interstar panther 5600db(外猫)可以拨号上网,注册表中的键值表明是支持来电显示的,
电话和model的连接:电话线接model的line口,电话和model的phone口相连,
这种连接方式可以接听电话,且有来电显示,model也可以上网
电话已开通来电显示,但我的程序只显示Ring,得不到电话号码
测试结果,memo中显示如下:(“《》”是为了方便查看而自定的分隔符)

OK

《》

RING

《》

RING

《》

RING

.
.
.
收到的就是这些,只有ring,没有电话号码
希望有这方面经验的专家指点指点,是不是我程序有误
 
我的代码如下:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, MSCommLib_TLB, StdCtrls,StrUtils;

type
TForm1 = class(TForm)
MSComm1: TMSComm;
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure MSComm1Comm(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if not self.MSComm1.PortOpen then
self.MSComm1.PortOpen:=true;
self.MSComm1.Output:='at#cid=1'+#13;
end;

procedure TForm1.MSComm1Comm(Sender: TObject);
var buffer,tmpStr,CallNum:string;
zhen:boolean;
begin
Buffer := Buffer + MSComm1.Input;
Buffer := UpperCase(Buffer);
self.Memo1.Lines.Add('《'+buffer+'》');//加了自定分格符“《》”
End;
procedure TForm1.FormCreate(Sender: TObject);
begin
with self.MSComm1 do begin
InBufferSize:=1024;
Inputlen:=0;
InputMode:=0;
Rthreshold:=1;
RTSEnable:=True;
Settings:='9600,N,8,1';
Sthreshold:=0;
end;
end;

end.
 
要注意一个问题,就是好多modem芯片支持来电显示,实际上由于少上了几个零件。
芯片并没有接收到来电号码的信号,无法解码出来。具体情况请咨询modem的厂家。
另外你可以用超级终端来看看,有来电显示的话,在超级终端上会以字符形式显示出来的。
 
还要看邮电局给你开通没有,朋友。
 
超级终端的结果一样

难道我的方法完全是正确的?能不能帮忙找点错误出来?
 
来电显示有两种方式:dtmf fsk
不知道你的modem 是不是全部都支持。
而且正好与你的电信匹配。
 
以前我收藏了一个网页,上面列了很多能用的modem,可惜丢了.
提点建议吧,你可能需要给modem发一条指令,指示它开始解来电显示号码,否则你是收不到的.
具体是什么指令我也记不得了,你还是用google什么的搜索一下吧,这我就不帮你搜索了.
 
dtmf fsk
我对这方面的东西还没概念,唉!可悲
 
申请开通来电显示!
Modem就会反映出电话。
 
我有个一定有用的方法,
就是搞个来电显示电话,等电话来了,把号码输入到电脑里面就可以了!

别扁我呀。这个方法从来没有错过,不过你输错了,别怪我。!
 
多半是没开通来电显示,兄弟,电信卡住你了!
 
at+vcid=1
好像要先执行一下这个。
 
虽然我的问题还是没解决,但还是很感谢大家,谢谢
 
多人接受答案了。
 
上面这位朋友,不知道你解决问题了没有,我也很想知道答案,能否把你的程序发一份来给我看看,是不是用的VB下的MSCOMM控件?
 
后退
顶部