注册 登录
编程论坛 VB6论坛

VB上位机传送两个十六进制数

aiwoleilei 发布于 2012-05-01 15:28, 2145 次点击
现在我想编一个VB上位机程序,通过串口向单片机传送两个十六进制数,但第一个固定为01,第二个随输入而改变,比如输入014F等等,我这里有传送一个十六进制数的程序:
Private Sub Cmdsend_Click()
c = numText.Text
If (c = "FF") Then
data1 = "&H" & c
data = Chr(data1)
Else
a = Left(c, 1)
b = Right(c, 1)
data1 = "&H" & numText.Text
data = Chr("&H" & a) & Chr("&H" & b)
End If
MSComm1.Output = data
Cmdsend.Enabled = False
End Sub
请问怎么传送两个十六进制数?
我现在有两种想法,
第一:就是直接输入两个十六进制数,01XX,然后通过串口传送
第二:直接输入一个十六进制数XX,第一个十六进制数01固定在程序中,就是无论发什么数,都是和XX一块发送的
VB程序怎么编,在线等,跪求,急用!!!
2 回复
#2
smithlzh2012-06-13 11:24
联系我QQ:274672776
#3
风吹过b2012-06-14 08:54
最近看到几个这种的问题,发现都进了一个误区,以为以字符串形式发送 &HXX 就是发送一个 十六进制数。
其实,十六进制 与十进制数,对于编程人员来说,实际上是一回事。只是计算机不直接认识十进制数,
当我们输入十进制数时,计算机会自动转化为十六进制数保存起来。
当我们要输入一个数据时,计算机会把保存的十六进制数,转化为十进制形式的数据显示出来。
这中间的过程是透明的,一般情况下可以当作不存在的。

&H0A 和 10 就是完全一样的数值,赋值给一个 byte 数据时,结果是一样的。

发送十六进制数,要么使用 byte 数据或数组发送,要么就使用 ASCII 字符串发送。

如果是发送二个数
那么定义

data1(0 to 1) as byte
data1(0)=&H01                '注意,没双引号,或者直接用 十进制  1 也行。
data1(1)=val(numText.Text)    '当 numtext.text 值的范围不在 0-255之间,这行报错。

然后发送 data1 这个 byte 数组就行了。
1