MSCOMM 控件是用于串口通信的,使用方便。在VB中,这个串口控件缺省是用于收发字符串的。在实际的控制应用场合经常需要使用二进制收发。在程序编制时注意以下内容。
1、设置串口
Dim temp As String
temp = Mid(Combo1.Text, 4)
MSComm1.CommPort = CDec(Mid(Combo1.Text, 4))
'MSComm1.InBufferCount = 0
MSComm1.InputLen = 64
MSComm1.SThreshold = 0 '一旦发送数据就触发OnComm()事件来检测是否返回数据
MSComm1.RThreshold = 3 '接收到1个字节数据就立即触发OnComm()事件
MSComm1.Settings = "115200,n,8,1"
MSComm1.InputMode = comInputModeBinary '这个地方要设置为输入binary模式
MSComm1.PortOpen = True
2、发送二进制数 可以定义一个Byte数组然后连接到output发送出去
Dim bytebuf(0 To 5) As Byte
bytebuf(0) = 1
bytebuf(1) = 13
bytebuf(2) = &H53
bytebuf(3) = &HAA
bytebuf(4) = &HEF
bytebuf(5) = &HFF
MSComm1.Output = bytebuf
3、接收二进制数 可以使用一个checkbox选择是十六进制还是文本型显示
Dim tempstr As Variant '定义一个Variant型的数,这个非常重要
Dim i As Integer
If MSComm1.InputLen <> 0 Then
tempstr = MSComm1.Input
For i = LBound(tempstr) To UBound(tempstr)
If Check1.Value = Checked Then
Text7.Text = Text7.Text + Hex(tempstr(i)) + " "
Else
Text7.Text = Text7.Text + Chr(tempstr(i))
End If
Next i
End If
附:查找机器上的可用串口 一般做法是读注册表 但这里使用穷举法
Dim i As Integer
Combo1.Clear
On Error Resume Next
For i = 1 To 100
MSComm1.CommPort = i
If (MSComm1.PortOpen = False) Then
MSComm1.PortOpen = True
End If
If (MSComm1.PortOpen) Then
Combo1.AddItem "com" + CStr(i)
MSComm1.PortOpen = False
End If
Next i
用户1588142 2012-3-26 21:17