单片机给电脑发送一个字节的十六进制数,这个数该存放在什么类型的变量里呢

现在需要用单片机将一个字节的十六进制数,比如说0xd5,传送到电脑里,上位机程序用VB2008编写。
问题是,在单片机程序中,这个十六进制数该存放在什么类型的变量里呢?电脑接收到这个数据又该用什么类型的变量存放呢?
例如,采用事件触发方式接收,接收缓冲区收到一个字节的数据后触发接收事件,Data = SerialPort1.ReadExisting,其中这个Data该是什么类型的变量呢?
然后怎么将这个接收到的十六进制的数转换成整型的十进制以便之后的数学运算,比如,将0xd5转换成它的十进制213。

1。串口发送:单片机这里很简单:设好波特率后,只要一条MOV SBUF,A即可将累加器的内容(一个字节)送到串口。
2。数据格式:在单片机这里,全是以字节方式运行的,更大的数要多字节拼装
3。在VB中,串口接收要选用“字节”方式,不要用“字符串”方式,这样可以很好的和单片机配合。
4。在VB中,可以将字节数据转换为无符号整数。
5。如果数据仅限于字节(256之内),用刚才接收的字节就可以直接参加运算。0D5H即是213,超过一个字节的数值,由单片机传过来之后要拼装,比如(1A2BH)先传1AH,再传2BH,到VB中,将1AH(=26)乘以16(=416),再加上2BH(=43),其和等于459(=0X1CB)。
6。十六进制在单片机中用0ABH方式,在VB中用0xAB方式表示。追问

这个问题我已经自己解决了
PC接收十六进制数并要存储为数值型数据的VB.net的代码是data = SerialPort1.ReadByte
还有,接收数据并要储存为字符型数据的VB.net的代码是data = SerialPort1.ReadChar
接收数据并要储存为字符串型数据的VB.net的代码是data = SerialPort1.ReadExisting

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-21
……不知道你为什么如此执念于十进制。

想象你自己是计算机,只认识十六进制、不认识十进制。那么很多问题或许将迎刃而解。本回答被网友采纳
第2个回答  2012-11-21
发送就发送16进制就可以,接收采用byte数组,byte接收到一般就是10进制的,这个你可以调试看看。如果在需要别的格式用vb2008转换即可
第3个回答  2012-11-21
16进制当然是用byte保存啊,0xFF表示最大,也就是255.和byte一致
第4个回答  2012-11-24
我初学的时候也会问这样的问题哎。。。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网