串口通信时读取得到的variant型数据怎么转化为小数

 我来答
婉丽还如意的银杏v
2017-05-18 · TA获得超过4218个赞
知道大有可为答主
回答量:2838
采纳率:86%
帮助的人:397万
展开全部
当发送类型是二进制时,应将以字节型数据放入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都行。呵呵,没时间了写得很乱,吃饭去也。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhangsonglin_c
高粉答主

2017-05-18 · 醉心答题,欢迎关注
知道大有可为答主
回答量:3.7万
采纳率:83%
帮助的人:7012万
展开全部
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条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式