微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vb mscomm1串口通信接收发送十六进制数据

Private Sub Command1_Click()
Dim OutBuffer() As Byte
Dim tem As Variant
Dim e As Integer
Dim q As Integer
Dim LenOfText As Integer
LenOfText = Len(txtSum.Text) / 2 - 1
ReDim OutBuffer(LenOfText)

If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If

q = 0
For e = 1 To Len(txtSum.Text) Step 2
tem = Mid(txtSum.Text,e,2)
OutBuffer(q) = Val("&H" & tem)
Debug.Print Val("&H" & tem)
q = q + 1
Next

MSComm1.Output = OutBuffer

End Sub

Private Sub Form_Load()

MSComm1.CommPort = 1MSComm1.Settings = "19200,N,8,1"MSComm1.InputMode = comInputModeBinaryMSComm1.InputLen = 0MSComm1.InBufferSize = 1024MSComm1.OutBufferSize = 512MSComm1.PortOpen = TrueMSComm1.SThreshold = 0MSComm1.RThreshold = 1MSComm1.InBufferCount = 0MSComm1.OutBufferCount = 0End SubPrivate Sub MSComm1_OnComm()On Error Resume NextDim BytesReceived() As ByteDim buffer As StringDim HData As StringDim i As IntegerSelect Case MSComm1.CommEventCase comEvReceive '接收十六进制数据。并以十六进制显示MSComm1.InputLen = 0buffer = MSComm1.Input '接收数据至字符串中BytesReceived() = buffer '将数据转入Byte数组中For i = 0 To UBound(BytesReceived) '显示结果以十六进制显示If Len(Hex(BytesReceived(i))) = 1 ThenHData = HData & "0" & Hex(BytesReceived(i))ElseHData = HData & Hex(BytesReceived(i))End IfText1.Text = HData'最后将结果后入Text1中MSComm1.OutBufferCount = 0 '清除发送缓冲区MSComm1.InBufferCount = 0 '清除接收缓冲区MSComm1.PortOpen = FalseNextEnd SelectEnd Sub

原文地址:https://www.jb51.cc/vb/261401.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐