我想做一个气表,好一个数值是有小数点的,在单片机上很容易解决这个问题,现在我想通过串口发送到PC上使用VB程序接收,现在我搞不明白的就是这个过程中的数据转换问题,在单片机中的数据都是16进制的,我在PC接收的数据也是16进制的,现在我想弄明白的是如何将这些数据转换为带有小数点的数据,希望哪位能人能详细的讲述一下,或着提供一个可以学习的地方,谢谢
两种方式:
一:规定一帧长度,把浮点可能四个字节或是八个字节,以二进制的形式发到PC端,VB以同样的读二进制的方式取后重组成浮点(不过好像VB玩二进制操作不是很爽)
二:在单片机上,用sprintf函数把浮点转成字符器,把字符串发到PC端,VB截下后,从字符串转成浮点数.(注,这个是标准C里理论可行的,但是我在C51下用sprintf的时候,总出莫名的问题,要不LZ再试试,把结果和我说一声,呵呵)
如果单片机里能把浮点数打开成一位位的,那就更爽了
直接把每一位按顺序组合起来,直接以可靠的形式发给PC(像:头,位数,尾),然后VB组合,弄成字符串,VB里有直接将字符串转成浮点数的API
建議用字符串的方式,簡單一點,但要想通訊速度快,就要用二進制方式。
看你位数有多长,如果精度不高,可先扩大一定倍数,然后在PC端缩小就是,pc处理FLOAT还是可以的