串口通信时读取得到的variant型数据怎么转化为小数
2个回答
展开全部
当发送类型是二进制时,应将以字节型数据放入Variant型变量中。发送端:procedureTForm1.BitBtn1Click(Sender:TObject);vari,size:integer;send_Command87:variant;//fStream:TFileStream;beginsize:=100;send_Command87:=VarArrayCreate([1,size],varByte);fori:=0tosize-1dobeginsend_Command87[i]:=$ED//这里输入所要传输的数据end;mscomm.Output:=send_Command87;end;接收端:varbuffer:Olevariant;//MSComm1.InputMode=comInputModeBinaryi:integer;begincaseMSComm1.CommEventofcomEvReceive://串行接收事件处理beginbuffer:=MSComm1.Input;//读出后会自动清除接收缓冲区fori:=0toMSComm1.RThreshold-1do//32字节Hex转换beginEdit3.Text:=Edit3.Text+inttohex(buffer[i],2)+'';end;Memo1.Lines.Add(Edit3.Text);//加入一行显示end;end;发送端数据读入你可以自己想方法只要是Variant都行。呵呵,没时间了写得很乱,吃饭去也。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Variant 是一种特殊的数据类型,除了定长String数据及用户定义类型外,可以包含任何种类的数据。Variant 也可以包含Empty、Error、Nothing及Null等特殊值。可以用VarType函数或TypeName函数来决定如何处理 Variant 中的数据。
数值数据可以是任何整型或实型数,负数时范围从
-1.797693134862315E308 到 -4.94066E-324,正数时则从 4.94066E-324 到
1.797693134862315E308。通常,数值Variant 数据保持为其 Variant 中原来的数据类型。例如,如果把一个
Integer赋值给 Variant,则接下来的运算会把此 Variant 当成 Integer 来处理。然而,如果算术运算针对含
Byte、Integer、Long 或 Single 之一的Variant 执行,并当结果超过原来数据类型的正常范围时,则在 Variant
中的结果会提升到较大的数据类型。如Byte则提升到 Integer,Integer 则提升到 Long,而 Long和Single 则提升为 Double。当 Variant 变量中有 Currency、Decimal 及 Double 值超过它们各自的范围时,会发生错误。
可以通过自动类型转换或强制类型转换,来处理。
数值数据可以是任何整型或实型数,负数时范围从
-1.797693134862315E308 到 -4.94066E-324,正数时则从 4.94066E-324 到
1.797693134862315E308。通常,数值Variant 数据保持为其 Variant 中原来的数据类型。例如,如果把一个
Integer赋值给 Variant,则接下来的运算会把此 Variant 当成 Integer 来处理。然而,如果算术运算针对含
Byte、Integer、Long 或 Single 之一的Variant 执行,并当结果超过原来数据类型的正常范围时,则在 Variant
中的结果会提升到较大的数据类型。如Byte则提升到 Integer,Integer 则提升到 Long,而 Long和Single 则提升为 Double。当 Variant 变量中有 Currency、Decimal 及 Double 值超过它们各自的范围时,会发生错误。
可以通过自动类型转换或强制类型转换,来处理。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询