Private Sub Command1_Click()
        MSComm1.SThreshold = 8 '1B 7C 77 A0 30 54 57 15
        MSComm1.Output = Chr(&H1B) & Chr(&H7C) & Chr(&H77) & Chr(&HA0) & Chr(&H0) & Chr(&H0) & Chr(&H0) & Chr(&H0)End SubPrivate Sub Command2_Click()
        
        Dim oldtime As Single
        Dim i As Integer
        MSComm1.SThreshold = 3
        MSComm1.Output = Chr(&H1D) & Chr(&H49) & Chr(&H1)
       ' Chr (&H1D) & Chr(&H49) & Chr(&H1)        HData = ""
        oldtime = Timer
        i = 0
        Do
            DoEvents
            If Timer < oldtime Then oldtime = Timer
            If Timer - oldtime > 0.1 Then
                i = i + 1
                oldtime = Timer
            End If
        Loop Until (i >= 5)        If HData = "CFABA8EA" Then
           MsgBox "初始化保单箱成功"
        Else
           MsgBox "初始化保单箱失败"
        End If
End SubPrivate Sub Form_Load()
    MSComm1.CommPort = 3                 '设置串口
    MSComm1.Settings = "9600,N,8,1"     '波特率:9600 奇校验,8位数据,1位停止位
    MSComm1.InBufferSize = 255          '设置接收缓冲区为256字节
    MSComm1.OutBufferSize = 255         '设置发送缓冲区为256字节
    MSComm1.SThreshold = 1              '发送缓冲区空不触发发送事件
    MSComm1.OutBufferCount = 0          '清空发送缓冲区
    
    MSComm1.InputLen = 1                '每次读取接收缓冲区的字符个数
    MSComm1.InputMode = comInputModeBinary
    MSComm1.RThreshold = 1              '收到一个字节后触发接收事件
    
    If MSComm1.PortOpen = False Then MSComm1.PortOpen = True '//打开串口
       
End SubPrivate Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End SubPrivate Sub MSComm1_OnComm()    Dim BytesReceived() As Byte
    Dim buffer As String    Dim i As Integer
    Select Case MSComm1.CommEvent
        Case comEvReceive
       
            MSComm1.InputLen = 0 '接收十六进制数据。并以十六进制显示
            buffer = MSComm1.Input                  '接收数据至字符串中
            BytesReceived = buffer                '将数据转入Byte数组中
            For i = 0 To UBound(BytesReceived)      '显示结果以十六进制显示
                If Len(Hex(BytesReceived(i))) = 1 Then
                    HData = HData & "0" & Hex(BytesReceived(i))
                Else
                    HData = HData & Hex(BytesReceived(i))
                End If
            Next
                
          MSComm1.InBufferCount = 0       '清除接收缓冲区
'          MSComm1.OutBufferCount = 0      '清除发送缓冲区
        Case comEvSend
          MSComm1.OutBufferCount = 0      '清除发送缓冲区
    End SelectEnd Sub
问题        MSComm1.SThreshold = 8 '1B 7C 77 A0 30 54 57 15
        MSComm1.Output = Chr(&H1B) & Chr(&H7C) & Chr(&H77) & Chr(&HA0) & Chr(&H0) & Chr(&H0) & Chr(&H0) & Chr(&H0)  这个发送怎么老是不成功  而且会有一个 振铃事件
高手帮忙一下  郁闷中~~~

解决方案 »

  1.   

    LZ:按Byte流发送
    Private Sub Command1_Click()
        'MSComm1.SThreshold = 8 '1B 7C 77 A0 30 54 57 15
        Dim bytSendData() As Byte
        ReDim bytSendData(7)
        bytSendData(0) = &H1B
        bytSendData(1) = &H7C
        bytSendData(2) = &H77
        bytSendData(3) = &HA0
        bytSendData(4) = &H30
        bytSendData(5) = &H54
        bytSendData(6) = &H57
        bytSendData(7) = &H15
        If MSComm1.PortOpen = True Then
            MSComm1.Output = bytSendData() 
        End If
    End Sub
      

  2.   

    也许楼主没有理清楚串口通信的问题,你的代码可能问题出在:MSComm1.SThreshold 属性赋值上面,你应该是赋错属性了,这样,给你一个我经常使用的串口调试器的代码,你可以借鉴一下,希望能给你带来帮助:
    http://download.csdn.net/source/1262066