使用mscomm控件控制modem,不能打开来电显示功能,截获来电号码

Equn 2004-09-18 11:16:45
外置、内置MODEM都测过,执行AT#VCID=1或AT#CID=1都不行。能正常拔号出去及检测来电响铃。
不知为何就是不能获得来电号码。

代码如下:

Public COMBUF As String

Public Sub InitModem()

'初始化Modem链接
With MSComm1
.InBufferSize = 1024
.InputLen = 0
.InputMode = 0
.RThreshold = 1
.RTSEnable = True
.Settings = "9600,N,8,1"
.SThreshold = 0
End With

'打开调制解调器端口
If MSComm1.PortOpen Then MSComm1.PortOpen = False
MSComm1.CommPort = COMX
If Not MSComm1.PortOpen Then MSComm1.PortOpen = True

'打开来电显示功能
MSComm1.Output = "AT#VCID=1" + Chr(13)
'检查Modem命令是否完成
If CHK_MODEM() = False Then
SetStatus "打开来电显示功能失败!!"
End If
MSComm1.Output = "ATS0=0" + vbCr
end sub

Public Function CHK_MODEM() As Boolean
'检测Modem命令是否执行成功
Dim T As Single
Dim L As Integer
T = Timer
Do
COMBUF = COMBUF + MSComm1.Input
L = InStr(1, COMBUF, "OK")
Loop Until L <> 0 Or Timer - T > 2

If L = 0 Then
CHK_MODEM = False
Else
CHK_MODEM = True
End If
End Function
...全文
367 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Equn 2004-12-17
  • 打赏
  • 举报
回复
更换modem解决问题
sgh321 2004-12-10
  • 打赏
  • 举报
回复
或者通过MODEM诊断是否支持,AT命令
我以前也遇到过和你一样的问题,换了MODEM后就解决了

sgh321 2004-12-10
  • 打赏
  • 举报
回复

先用超级终端检测你的MODEM,是否具有来电显示功能

如何用AT命令查询MODEM是否有来电显示并打开其功能

1,打开超级终端,随便输入一个连接名称。
  2,按确定后,在下个窗口中,看到你的猫,不输电话号码点击确定,然后在出现的窗口中按取消。
  3:这时将进入超级终端的界面。
  输入:AT回车
  如果出现OK,说明MODEM支持AT指令。
  然后输入下面的命令进行测试你的MODEM是否支持来电显示:
AT#CIDn或者AT+VCIDn
(如果输入AT#CIDn提示错误就用AT+VCIDn来测试,我的T40就只支持AT+VCID命令。n需替换成以下各项). n为以下项时功能分别如后所示:

n 功能

0 关闭呼叫者身份鉴定
1 打开DTE格式化形式的呼叫者身份鉴定
2 打开DTE非格式化形式的呼叫者身份鉴定
? 从调制解调器中恢复当前呼叫者身份鉴定方式
=? 返回调制解调器允许模式的列表,表中各部分间用逗号隔开
比如:
1:查询当前MODEM是否支持来电显示功能,输入:
AT#CID=?
如果显示为:
0
就表示不支持;若显示为:
0,1,2
就表示支持所有来电格式。如果显示
ERROM
说明当前MODEM不支持这种格式的命令,可输入另外一条命令(以下也一样)
AT+VCID=?来查询。
2:查询MODEM当前是否打开来电显示功能。输入:
AT#CID?
如果显示为:
0
则表示没有打开这个功能,如果显示为:
1
则表明已打开来电显示功能了。
3:打开MODEM的来电显示功能,输入:
AT#CID=1
如显示OK就表示已经成功打开来电显示了,这时可用手机打电话进来,超级终端上应有如下格式显示:

RING

DATE = 1110
TIME = 0923
NMBR = 13096090000


dyx 2004-11-15
  • 打赏
  • 举报
回复
用MSComm控件实现来电显示
http://dev.csdn.net/article/13/13838.shtm
litaoa 2004-11-14
  • 打赏
  • 举报
回复
我也正研究这个问题.

你可以给MODEM个AT指令AT#CID=1如果显示OK就证明你的MODEM是支持来电显示的.
如果没有显示,那就不支持.
换MODEM或是寻找别的方法
sgh321 2004-10-07
  • 打赏
  • 举报
回复
up
thirdapple 2004-10-07
  • 打赏
  • 举报
回复
在电信开通这个功能没有?-_-||
loverpyh 2004-10-07
  • 打赏
  • 举报
回复
up
Equn 2004-10-07
  • 打赏
  • 举报
回复
up
Equn 2004-10-05
  • 打赏
  • 举报
回复
up
helanshan 2004-09-27
  • 打赏
  • 举报
回复
up
jam021 2004-09-27
  • 打赏
  • 举报
回复
关注,帮你顶!
Equn 2004-09-26
  • 打赏
  • 举报
回复
up
haohaohappy 2004-09-19
  • 打赏
  • 举报
回复
up
Equn 2004-09-18
  • 打赏
  • 举报
回复
to tztz520(午夜逛街) :
没有用
tztz520 2004-09-18
  • 打赏
  • 举报
回复
With MSComm1
.InBufferSize = 1024
.InputLen = 0
.InputMode = 0
.RThreshold = 1
.RTSEnable = True
.Settings = "9600,N,8,1"
.SThreshold = 1
End With
Equn 2004-09-18
  • 打赏
  • 举报
回复
up
Equn 2004-09-18
  • 打赏
  • 举报
回复
打开来电显示功能已经成功,不是AT#VCID=1命令,而是at+vcid=1
打开来电显示功能虽成功,但是还是不能获取来电号码.
每次响铃只获得一个RING串

急啊,谁帮帮我
tztz520 2004-09-18
  • 打赏
  • 举报
回复
MSComm1.Output = "AT#VCID=1" + Chr(13)
'检查Modem命令是否完成
'你在这里用sleep延迟一下试下
If CHK_MODEM() = False Then
SetStatus "打开来电显示功能失败!!"
End If

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧