热度 19
2012-1-10 17:30
6632 次阅读|
1 个评论
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