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

时间:2022-09-06 10:35:47
外置、内置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

20 个解决方案

#1


With MSComm1
        .InBufferSize = 1024
        .InputLen = 0
        .InputMode = 0
        .RThreshold = 1
        .RTSEnable = True
        .Settings = "9600,N,8,1"
        .SThreshold = 1
End With

#2


to  tztz520(午夜逛街) :
没有用

#3


MSComm1.Output = "AT#VCID=1" + Chr(13)
'检查Modem命令是否完成
'你在这里用sleep延迟一下试下
If CHK_MODEM() = False Then
      SetStatus "打开来电显示功能失败!!"
End If

#4


打开来电显示功能已经成功,不是AT#VCID=1命令,而是at+vcid=1
打开来电显示功能虽成功,但是还是不能获取来电号码.
每次响铃只获得一个RING串

急啊,谁帮帮我

#5


up

#6


up

#7


up

#8


up

#9


关注,帮你顶!

#10


up

#11


up

#12


up

#13


在电信开通这个功能没有?-_-||

#14


up

#15


我也正研究这个问题.

你可以给MODEM个AT指令AT#CID=1如果显示OK就证明你的MODEM是支持来电显示的.
如果没有显示,那就不支持.
换MODEM或是寻找别的方法

#16


用MSComm控件实现来电显示
http://dev.csdn.net/article/13/13838.shtm

#17



先用超级终端检测你的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

  

#18


或者通过MODEM诊断是否支持,AT命令
我以前也遇到过和你一样的问题,换了MODEM后就解决了

#19


更换modem解决问题

#20


该回复于2011-04-28 14:33:38被版主删除

#1


With MSComm1
        .InBufferSize = 1024
        .InputLen = 0
        .InputMode = 0
        .RThreshold = 1
        .RTSEnable = True
        .Settings = "9600,N,8,1"
        .SThreshold = 1
End With

#2


to  tztz520(午夜逛街) :
没有用

#3


MSComm1.Output = "AT#VCID=1" + Chr(13)
'检查Modem命令是否完成
'你在这里用sleep延迟一下试下
If CHK_MODEM() = False Then
      SetStatus "打开来电显示功能失败!!"
End If

#4


打开来电显示功能已经成功,不是AT#VCID=1命令,而是at+vcid=1
打开来电显示功能虽成功,但是还是不能获取来电号码.
每次响铃只获得一个RING串

急啊,谁帮帮我

#5


up

#6


up

#7


up

#8


up

#9


关注,帮你顶!

#10


up

#11


up

#12


up

#13


在电信开通这个功能没有?-_-||

#14


up

#15


我也正研究这个问题.

你可以给MODEM个AT指令AT#CID=1如果显示OK就证明你的MODEM是支持来电显示的.
如果没有显示,那就不支持.
换MODEM或是寻找别的方法

#16


用MSComm控件实现来电显示
http://dev.csdn.net/article/13/13838.shtm

#17



先用超级终端检测你的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

  

#18


或者通过MODEM诊断是否支持,AT命令
我以前也遇到过和你一样的问题,换了MODEM后就解决了

#19


更换modem解决问题

#20


该回复于2011-04-28 14:33:38被版主删除

#21