RThreshold 属性
      在 MSComm 控件设置 CommEvent 属性为 comEvReceive 并产生 OnComm 之前,设置并返回的要接收的字符数。语法object.Rthreshold [ = value ]Rthreshold 属性语法包括下列部分:部分 描述 
object 对象表达式,其值是“应用于”列表中的对象。 
value 整型表达式,说明在产生 OnComm 事件之前要接收的字符数。 
说明当接收字符后,若 Rthreshold 属性设置为 0(缺省值)则不产生 OnComm 事件。例如,设置 Rthreshold 为 1,接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件。数据类型Integer

解决方案 »

  1.   

    另一个可能是Modem处于在线状态,一般在线状态不会返回ok
      

  2.   

    我所用的猫是GSM MODEM,而不是我们通常用的猫。
      

  3.   

    GSM MODEM我没用过,不过,我以前用过语音MODEM,发现同样的AT指令用A MODEM可以返回OK,换了B MODEM就不行了,不知道你的情况是否一样?
      

  4.   

    我没有遇见过这种情况,我原来是用JAVA写的,一切都正常。
      

  5.   

    我以前是用JAVA语言实现的,没有出现过这样的情况。我在Command1_Click()中添家了MSComm1.RTheshold=1,还是没有出发串口事件,很奇怪
      

  6.   

    在每个命令输出后加一VBCRLF试一下!
      

  7.   

    RThreshold 属性设置注意一下
      

  8.   

    RThreshold已经设置为1,可是还不行
      

  9.   

    你没有设置端口号
    mscomm1.commport=1
      

  10.   

    兄弟你用的是不是wavecom模块,他总会返回OK的。但是你的他的RThreshold=1才可以
      

  11.   

    我不大明白你说的wavecom模块是什么,因为我刚学习VB才几天。但是我已经设置RThreshold=1。
      

  12.   

    在你的接受语句中那个Do循环好象不对,Mscomm接受事件触发一次,就陷进去了,不在被第二次触发了
    把DO循环换成
    Buffer = Buffer & MSComm1.Input
    if InStr(ucase(Buffer), "OK" & vbCrLf) then
    .....
    其中buffer是模块级变量
       MSComm1.RThreshold = 1
       MSComm1.InputMode = comInputModeText
       
      

  13.   

    在你的接受语句中那个Do循环好象不对,Mscomm接受事件触发一次,就陷进去了,不在被第二次触发了
    把DO循环换成
    Buffer = Buffer & MSComm1.Input
    if InStr(ucase(Buffer), "OK" & vbCrLf) then
    .....
    其中buffer是模块级变量
       MSComm1.RThreshold = 1
       MSComm1.InputMode = comInputModeText
       
      

  14.   

    我把程序改成如下所示:结果是只打印出了“Send is over! Please wait..."和CTS条变成黑色。仍然得不到GSM MODEM的响应信息Dim Simno As String
    Dim MsgBody As String
    Dim dataPrivate Sub Command1_Click()
    Dim response As IntegerMSComm1.RThreshold = 1
    MSComm1.InputLen = 0
    MSComm1.PortOpen = True
    MSComm1.InputMode = comInputModeText
    'MSComm1.Output = "AT+CMGS=" & Chr(34) & "+86" & Simno & Chr(34) & Chr$(13) & vbCr
    'MSComm1.Output = MsgBody & Chr(26) & vbCr
    'MSComm1.Output = "AT+CMGL=" & Chr(34) & "ALL" & Chr(34) & vbCrLf
      If MSComm1.CTSHolding Then        Text1.BackColor = Red
        Else
            Text1.BackColor = Blue
        End If
    MSComm1.Output = "AT+CCID" & vbCrLf
     Dim str As String
     FontSize = 20
     str = "send is over!" & Chr(13) & "Please wait..."
        Print strEnd SubPrivate Sub Command2_Click()
    Unload MeEnd SubPrivate Sub MSComm1_OnComm()
    On Error GoTo Err:
           Dim srt As String
           srt = "receive msg"
           Print srtSelect Case MSComm1.CommEvent
            Case comEvCTS   ' CTS 线状态变化。
            
            Print "OK"
                
            Case comEvReceive
            
          Buffer = Buffer & MSComm1.Input
          
          If InStr(UCase(Buffer), "OK" & vbCrLf) Then
          Print Buffer
          End If
          
      ' 从串行端口读 "OK" 响应。
      ' 关闭串行端口。
       
          MSComm1.PortOpen = False
          
       
          Case Else
          Dim s As String
          s = "Something is errro!"
          Print s
    End Select
    Err:
       Dim ss As String
       ss = "Error"
       Print ssEnd Sub
      

  15.   

    你的波特率和数据位等参数设了吗?
    mscomm1.setting属性没有gsmmodem的资料,不能帮你了
      

  16.   

    Gsmmodem是什么玩意,是不是发往手机发短信的那一种吗?
      

  17.   

    你的MSCOMM控件的Rthreshold要设置成大于1!