vb如何显示十六进制数据 20
OptionExplicitDimstrDataAsStringDimbytInput()AsBytePrivateSubMsComm1_OnComm()DimintIn...
Option Explicit
Dim strData As String
Dim bytInput() As Byte
Private Sub MsComm1_OnComm()
Dim intInputLen As Integer
MSComm1.InputMode = comInputModeBinary '二进制接收
intInputLen = MSComm1.InBufferCount
ReDim bytInput(intInputLen)
bytInput = MSComm1.Input
jieshou
End Sub
Public Function jieshou() '接收数据处理为16进制
Dim i As Integer
For i = 0 To UBound(bytInput)
If Len(Hex(bytInput(i))) = 1 Then
strData = strData & "0" & Hex(bytInput(i))
Else
strData = strData & Hex(bytInput(i))
End If
Next
Text1.Text = strData
End Function
Private Sub Form_Load()
MSComm1.CommPort = 7
'MSComm1.InBufferSize = 1024
'MSComm1.OutBufferSize = 512
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
If (MSComm1.PortOpen = False) Then MSComm1.PortOpen = True
Timer1.Enabled = True ' 启动Timer定时抓取接收值
Text1 = "" ' 清空讯息视窗
Timer1.Interval = 100 ' 设定Timer启动的时间间隔
End Sub
Private Sub Timer1_Timer() ' Timer的设定
MsComm1_OnComm
If Len(strData) = 2 Then '接收28字节长度数据
Text1.Text = strData
strData = ""
End If
End Sub
我想把接收的的动态数据 以16进制的形式显示 在text1中一直以单字节的16进制数显示 比如连续接收到的是01 02 03 04 在text中就显示01后01灭掉在显示02 以上我的程序都显示出来了 麻烦高手给修改一下 谢谢 展开
Dim strData As String
Dim bytInput() As Byte
Private Sub MsComm1_OnComm()
Dim intInputLen As Integer
MSComm1.InputMode = comInputModeBinary '二进制接收
intInputLen = MSComm1.InBufferCount
ReDim bytInput(intInputLen)
bytInput = MSComm1.Input
jieshou
End Sub
Public Function jieshou() '接收数据处理为16进制
Dim i As Integer
For i = 0 To UBound(bytInput)
If Len(Hex(bytInput(i))) = 1 Then
strData = strData & "0" & Hex(bytInput(i))
Else
strData = strData & Hex(bytInput(i))
End If
Next
Text1.Text = strData
End Function
Private Sub Form_Load()
MSComm1.CommPort = 7
'MSComm1.InBufferSize = 1024
'MSComm1.OutBufferSize = 512
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
If (MSComm1.PortOpen = False) Then MSComm1.PortOpen = True
Timer1.Enabled = True ' 启动Timer定时抓取接收值
Text1 = "" ' 清空讯息视窗
Timer1.Interval = 100 ' 设定Timer启动的时间间隔
End Sub
Private Sub Timer1_Timer() ' Timer的设定
MsComm1_OnComm
If Len(strData) = 2 Then '接收28字节长度数据
Text1.Text = strData
strData = ""
End If
End Sub
我想把接收的的动态数据 以16进制的形式显示 在text1中一直以单字节的16进制数显示 比如连续接收到的是01 02 03 04 在text中就显示01后01灭掉在显示02 以上我的程序都显示出来了 麻烦高手给修改一下 谢谢 展开
推荐于2017-09-17 · 知道合伙人软件行家
关注
展开全部
1)VB使用&H前缀拼接十六进制字符串,可作为16进制数直接使用。
适当范围内的数字,前缀以 &H,可以直接表示十六进制数字。例如,十六进制表示法的 &H10
代表十进制的 16。
2)使用Hex 函数可返回代表十六进制数值的 String。
Hex 函数示例:
本示例使用 Hex 函数来得到某数值的 16 进制值。
Dim MyHex
MyHex = Hex(5) ' 返回 5。
MyHex = Hex(10) ' 返回 A。
MyHex = Hex(459) ' 返回 1CB。
3)十六进制(英文名称:Hexadecimal),是计算机中数据的一种表示方法。同我们日常生活中的表示法不一样。它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F。
4)在串口通信工程中的实际使用:
Private Sub MSComm1_OnComm() '接收数据
Dim strBuff As String
Select Case MSComm1.CommEvent
Case 2
MSComm1.InputLen = 0
strBuff = MSComm1.Input
BytReceived() = strBuff
jieshou
lenInput = Len(strData)
Text2 = lenInput \ 2
'数据处理代码
End Select
End Sub
Public Function jieshou() '接收数据处理为16进制字符串
Dim i As Integer
For i = 0 To UBound(BytReceived)
If Len(Hex(BytReceived(i))) = 1 Then
strData = strData & "0" & Hex(BytReceived(i))
Else
strData = strData & Hex(BytReceived(i))
End If
Next
RichTextBox1.Text = strData
End Function
展开全部
使用Hex函数可以将10进制数字显示为16进制.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Text1.Text =IIf(Len(Hex(strData)) < 2, "0" & Hex(strData), Hex(strData))
更多追问追答
追问
你好 加入你的程序后 开始text1中显示单字节的十六进制数据 可等接收下一次发过来的数据 就显示双字节了 再一次接收就会又增加一个字节 然后就提示溢出 不知何原因 恳请赐教
追答
需要你把strData中的数据先分开吧,分成单字节数据。我不知道你的数据是什么样的。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询