通过com1读取温度计数据,测试com1正常,但是运行后没有任何反应。
代码如下,请教帮我看看是什么原因?Private Sub Form_Load()
    MSComm1.CommPort = 1
    MSComm1.Settings = "9600,n,8,1"
    MSComm1.PortOpen = True
End SubPrivate Sub MSComm1_OnComm()
    Dim strTest As String
    
    If MSComm1.PortOpen = False Then
        MsgBox "error"
        Exit Sub
    End If
    
    Select Case MSComm1.CommEvent
        Case comEvReceive
            MsgBox StrConv(MSComm1.Input, vbUnicode)
        Case comEvSend
            MsgBox "send"
        Case Else
            MsgBox "other"
    End Select
End Sub

解决方案 »

  1.   

    窗体初始化时未对MSComm的属性RThreshold作设置,另请注意接收模式按ASCII码接收还是按二进制方式接收,接收代码中不要使用MsgBox,它会中断接收事件:
    Private Sub Form_Load()
        MSComm1.CommPort = 1
        MSComm1.Settings = "9600,n,8,1"
        MSComm1.RThreshold = 1
        MSComm1.PortOpen = True
    End Sub
      

  2.   

    TO: zdingyun() 
      设定了RThreshold后,可以接收了。但是,
    再请教,接收模式按ASCII码接收还是按二进制方式接收具体是如何?
    我想实现按ASCII码接收。
      

  3.   

    如果你的通信协议是约定用ASCII码传递数据,则应对MSComm的属性InputMode进行设置:
    MSComm1.InputMode = comInputModeText '文本方式即ASCII码方式接收
    如果数据传递中有控制符或ASCII码在128-255间建议用二进制方式:
    MSComm1.InputMode = comInputModeBinary