求VB.6串口接收字符串代码!谢

请教下,求VB.6串口接收字符串代码!谢
最新回答
客情寄风絮

2024-10-03 00:11:44

给段代码参考:

Option Explicit
    Dim strss As String
    Dim sum As Integer
Private Sub Command1_Click()         '开始接收
    Label1.Caption = " "
    If MSComm1.PortOpen = True Then
        MSComm1.PortOpen = False
    End If
        If MSComm1.PortOpen = False Then
            MSComm1.CommPort = 1             '串口号,
                MSComm1.Settings = "9600,n,8,1 "   '串口的属性
                MSComm1.InputLen = 0
                MSComm1.RThreshold = 9
              MSComm1.InputMode = comInputModeText
                MSComm1.PortOpen = True           '打开通信串口
                MSComm1.InBufferCount = 0
              MSComm1.OutBufferCount = 0
        End If
    Print MSComm1.PortOpen
End Sub

Private Sub MSComm1_OnComm()
    Dim k, i, j  As Integer
    'Dim myarray()  As Byte既然以文本模式接收,则无须用Byte数组来获取数据
        Select Case MSComm1.CommEvent
            Case comEvReceive
                k = MSComm1.InBufferCount
                If k = 0 Then
                    Exit Sub
                End If
                ReDim myarray(k - 1)
                strss = MSComm1.Input
                Label1.Caption = Val(Mid(StrReverse(strss), 2, 8))
                strss = ""
            Case comEvSend
            MSComm1.OutBufferCount = 0
            MSComm1.InBufferCount = 0
        End Select
End Sub

Private Sub Command5_Click() '停止接收
    If MSComm1.PortOpen = True Then
        MSComm1.PortOpen = False
    End If
End Sub
追问
首先谢谢你的回答已达到我想要的了,谢谢!但是我想弄明白其中的意思,所以麻烦你解释一下接收(MSComm1_OnComm())那段代码或者注释一下!十分感激!
追答
Private Sub Form_Load()
    MSComm1.CommPort = 1             '串口号,
    MSComm1.Settings = "9600,n,8,1 "   '串口的属性
    MSComm1.InputLen = 0 '设置 InputLen 为 0 时,使用 Input 将使 MSComm 控件读取接收缓冲区中全部的内容。
    MSComm1.RThreshold = 1
    MSComm1.InputMode = comInputModeText '以文本方式接收
    MSComm1.PortOpen = True           '打开通信串口
    MSComm1.InBufferCount = 0
End Sub

Private Sub MSComm1_OnComm()
    Dim k, i, j  As Integer
        Select Case MSComm1.CommEvent
            Case comEvReceive
                strss = xtrss & MSComm1.Input '返回并删除接收缓冲区中的数据流
                Text1 = strss '显示接收内容
                MSComm1.InBufferCount = 0 '把 InBufferCount 属性设置为 0 来清除接收缓冲区。
        End Select
End Sub
绝绝子

2024-10-03 00:21:46

推荐看书
Visual_Basic与_RS-232_串行通信控制

非常经典