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