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 以上我的程序都显示出来了 麻烦高手给修改一下 谢谢
展开
 我来答
zdingyun
推荐于2017-09-17 · 知道合伙人软件行家
zdingyun
知道合伙人软件行家
采纳数:15429 获赞数:48179
1982年上海业余工业大学化工系毕业 现退休

向TA提问 私信TA
展开全部

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
新鲜的那点事儿
2015-09-16 · TA获得超过135个赞
知道小有建树答主
回答量:92
采纳率:66%
帮助的人:38万
展开全部
使用Hex函数可以将10进制数字显示为16进制.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
中学知识快递
2011-05-15 · 专注于中学知识、试题的收集、整理和传播
中学知识快递
采纳数:150 获赞数:484

向TA提问 私信TA
展开全部
Text1.Text =IIf(Len(Hex(strData)) < 2, "0" & Hex(strData), Hex(strData))
更多追问追答
追问
你好 加入你的程序后  开始text1中显示单字节的十六进制数据  可等接收下一次发过来的数据  就显示双字节了  再一次接收就会又增加一个字节  然后就提示溢出   不知何原因  恳请赐教
追答
需要你把strData中的数据先分开吧,分成单字节数据。我不知道你的数据是什么样的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式