vb 如何使用mscomm1部件串口通信接收发送十六进制数据代码

公式库网
公式库网
公式库网
843
文章
3
评论
2020年5月31日20:17:39 评论 253 views

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 = 1
MSComm1.Settings = "19200,N,8,1"
MSComm1.InputMode = comInputModeBinary
MSComm1.InputLen = 0
MSComm1.InBufferSize = 1024
MSComm1.OutBufferSize = 512
MSComm1.PortOpen = True
MSComm1.SThreshold = 0
MSComm1.RThreshold = 1
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
End Sub

Private Sub MSComm1_OnComm()
On Error Resume Next
Dim BytesReceived() As Byte
Dim buffer As String
Dim HData As String
Dim i As Integer
Select Case MSComm1.CommEvent
Case comEvReceive '接收十六进制数据。并以十六进制显示
MSComm1.InputLen = 0
buffer = MSComm1.Input '接收数据至字符串中
BytesReceived() = buffer '将数据转入Byte数组中
For i = 0 To UBound(BytesReceived) '显示结果以十六进制显示
If Len(Hex(BytesReceived(i))) = 1 Then
HData = HData & "0" & Hex(BytesReceived(i))
Else
HData = HData & Hex(BytesReceived(i))
End If
Text1.Text = HData
'最后将结果后入Text1中
MSComm1.OutBufferCount = 0 '清除发送缓冲区
MSComm1.InBufferCount = 0 '清除接收缓冲区
MSComm1.PortOpen = False
Next
End Select
End Sub

 

继续阅读
公式库网
  • 本文由 发表于 2020年5月31日20:17:39
  • 转载请务必保留本文链接:http://www.gongshiku.com/html/202005/vb-ruheshiyongmscomm1bujianchuankoutongxinjieshoufasongshiliujinzhishujudaima.html
博途PLC如何使用数据块 电子书

博途PLC如何使用数据块

博途PLC如何使用数据块 熟悉西门子S7-300及以上的人都知道,数据块DB在西门子的程序设计中起到了非常重要的作用,可以说DB块几乎承载了程序99%以上的数据,但是习惯了S7-300/400的人遇到...
老外教你用C#实现S7.Net与西门子PLC通讯 工控

老外教你用C#实现S7.Net与西门子PLC通讯

老外教你用C#实现S7.Net与西门子PLC通讯 首先声明,本文是从别处借鉴而来,本文所描述的方法,本站并没有去验证。在与PLC通信方面,本站有更简洁的方法,会在后期陆续更新到网站。下面,大家先从这篇...

发表评论