可以将MSComm控件的InputMode 属性设置成comInputModeBinary 的二进制发送方式这样就可以发送了,但必须将82H放入一个字节型数组中,再发送此数组。

解决方案 »

  1.   

    Private Sub Form_Load()
       If MSComm.PortOpen = False Then
            MSComm.CommPort = 1
            MSComm.Settings = "9600,N,8,1"
            frmMain.MSCommMain.PortOpen = False
            MSComm.PortOpen = True
            MSComm.InputMode = comInputModeBinary
        End If
    End Sub
    Private Sub CmdSend_Click()
        Dim OutputOrder(0) As Byte
        OutputOrder(0) = &H82
        MSComm.Output = OutputOrder    '发请求
    End Sub
    如果要发送一串数据,可以将其放到一个大一点的数组中再发送。
      

  2.   

    刚刚有点错,
    Private Sub Form_Load()
      If MSComm.PortOpen = False Then
            MSComm.CommPort = 1
            MSComm.Settings = "9600,N,8,1"
            MSComm.PortOpen = True
            MSComm.InputMode = comInputModeBinary
        End If
    End Sub
    Private Sub CmdSend_Click()
        Dim OutputOrder(0) As Byte
        OutputOrder(0) = &H82
        MSComm.Output = OutputOrder    '发请求
    End Sub
      

  3.   


    private sub cmdReceive_click()
     dim buf as string
    while len(buf)=0 
    buf = Mscomm.input
    wEnd 
    End Sub 
    请问这个button收以上程序的发送,会收到什么呢?
      

  4.   

    如果我只发送了一个82H,那你什么也收不到,并且程序还会死等十秒钟以上。你应该这样:
    将MSComm控件的RThreshold和SThreshold属性值设为1,
    Private Sub MSComm_OnComm()
        Select Case ......
        ...
        Select Case MSComm.CommEvent
          Case comEvReceive   ' 收到 RThreshold 个单片机发来的字符
            Dim buf() As Byte
            buf = MSComm.InputEnd Select
        End Select
        
    End Sub
      

  5.   

    还是要记住:将MSComm控件的InputMode 属性设置成comInputModeBinary 
    这样在buf里收到的将是82H.