串口通讯中怎么往下位机下传浮点数?(50分)

  • 主题发起人 主题发起人 xudai
  • 开始时间 开始时间
X

xudai

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的是485通讯,往下位机下传整数已好,可是怎么下传浮点数?
 
存到文件里,按字节传
 
传浮点数我已经应用到了实际中,是这样实现的
假设你的数值是f,如线性方程用参数a ,b :
x * a/ b = f
公式来转换,其中x为0--255的一个字节的码值,注意用char 和ord转换就可以了
传输的只是一个x,然后再根据x来计算浮点数。
 
可以这样
move(arealtype, abytearray, sizeof(arealtype));
然后发送字节数组
 
real 8bytes;
这样
var
R:Real;
Temp: array[0..7]of Byte absolute R;

通过Temp[]就可以存取R(Real)的8个字节。把Temp的8字节传出去,用同样的方法
放回temp[]中就可以得到R的值。
 
to bluebird:
下位机也要用此公式来取得f?a,b的值怎么订的?
to iie:
move是自己写的函数?
to victortim:
能否详细解释一下,我没看懂。
多谢大家。
 
var
R:Real;
Temp: array[0..7] of Byte absolute R;

Temp和R的地址重叠,即R和Temp的首地址一样(@temp=@R),
Real占用个字节,用Temp的可以存取R的8个字节的数据。


var
R,R1:Real;
Temp: array[0..7] of Byte absolute R;
Temp1:array[0..7] of byte Absolute R1;
i:integer;
begin
R:=100;
R1:=99;
for i:=0 to 7 do
temp1:=temp;
...
Label1.Caption:=floattostr(r1);
end;

你会看到,R1=100;关键是Absolute
 
多人接受答案了。
 
后退
顶部