Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    
Private Sub Command1_Click()
        MSComm1.Output = "AT+CMGF=1" & vbCrLf
        Sleep 500
        MSComm1.Output = "AT+CMGR=2" & vbCrLf
        Sleep 500
End SubPrivate Sub Form_Load()
        MSComm1.CommPort = 11
        If MSComm1.PortOpen = False Then
        MSComm1.Settings = "115200,n,8,1"
        MSComm1.PortOpen = True
        End If
        MSComm1.InputMode = 0
        MSComm1.OutBufferCount = 0
        MSComm1.InBufferCount = 0
        MSComm1.InputLen = 1
        MSComm1.RThreshold = 1End SubPrivate Sub MSComm1_OnComm()
        MsgBox ("MSComm1.CommEvent " & MSComm1.CommEvent)
End Sub
端口MSComm1.CommPort = 11
在超级终端下面正常接收,在VB里就没有接收任何信息,不触发MSComm1_OnComm如果把端口换成1,MSComm1.CommPort = 1  '用另一个设备就
在超级终端下面正常接收,在VB里也可以正常触发MSComm1_OnComm不同设备对MSComm1支持不一样吗?
但在超级终端里都是正常的?还需要设置什么啊?

解决方案 »

  1.   

    1、确定你的串口编号是多少?PC机器上的串口默认的是COM1、COM2,你可以到设备管理器中查阅。
    2、你的串口存在逻辑可能错误,如果你的串口本来是打开的,那么你的Setting属性将不能设置,所以也就不可能实现通信。
    3、请把Command1的代码修改一下,把Sleep改为:
    intP=0
    do
        doevents
        Sleep 100
        intP=intP+1
    loop until intP>=5
    为的就是让OnComm有处理时间,VB是进程的,你的Command1
    这样写,独占了CPU资源,其它的事件都没有办法响应了。
      

  2.   

    这是一个VB编制的串口调试器,你可以借鉴一下:http://download.csdn.net/source/1262066
      

  3.   

    MSComm1.InBufferSize = 40
    看了串口调试器,我中间加了这条就正常了,呵呵