vb 16进制数的接受和现实
来源:百度知道 编辑:UC知道 时间:2024/06/07 15:14:23
Private Sub MSComm_OnComm()
On Error Resume Next
Dim BytesReceived() As Byte
Dim buffer As String
Dim HData As String
Dim i As Integer
Select Case MSComm.CommEvent
Case comEventOverrun
Text_SEND.Text = ""
Text_RECV.Text = ""
Text_SEND.SetFocus
Exit Sub
Case comEventRxOver
Text_SEND.Text = ""
Text_RECV.Text = ""
Text_SEND.SetFocus
Exit Sub
Case comEventTxFull
Text_SEND.Text = ""
Text_RECV.Text = ""
Text_SEND.SetFocus
Exit Sub
Case comEvReceive '接收十六进制数据。并以十六进制显示
MSComm.InputLen = 0
buffer = MSComm.Input '接收数据至字符串中
BytesReceived() = buffer '将数据转入Byte数组中
未设置MSComm控件的按2进制接收方式,其次MSComm控件不存在
comEventOverrun
comEventRxOver
comEventTxFull
事件。
代码修改如下:
Option Explicit
Dim HData As String
Private Sub Form_Load()
MSComm.Settings = "9600,n,8,1"
MSComm.InputMode = comInputModeBinary '按2进制接收方式
MSComm.RThreshold = 1
MSComm.PortOpen = True
End Sub
Private Sub MSComm_OnComm()
On Error Resume Next
Dim BytesReceived() As Byte
Dim buffer As String
Dim i As Integer
Select Case MSComm.CommEvent
Case comEvReceive '接收十六进制数据。并以十六进制显示
MSComm.InputLen = 0
buffer = MSComm.Input '接收数据至字符串中
BytesReceived() = buffer '将数据转入Byte数组中
For i = 0 To UBound(BytesReceived) '显示结果以十六进制显示
If Len(Hex(BytesReceived(i))) = 1 Then
HData = HData & "0" & Hex(BytesReceiv