vb 16进制数的接受和现实

来源:百度知道 编辑:UC知道 时间:2024/06/07 15:14:23
我的代码是这样的 ,下位机上传的数为0100,可是我用vb得到得却是01000000 正好多了0000 不知道为什么
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