购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 十六进制转浮点型

2.4.1 手动转换过程

MCGSE中没有浮点型数据与十六进制之间转换的函数,需要由用户自己编程实现。如图2-11所示,“-42.456985474”这个浮点数在计算机中的存储格式为“C229D3F4”,由二进制形式转换为浮点数的步骤如下:

图2-11 十六进制转换为浮点型数据的过程示意图

(1)确定符号 浮点数对应二进制数据的首位表示正、负,“1”为负,“0”为正,此处为“1”,故浮点数的符号为“-”,即最终计算会得到一个负数。

(2)通过指数将尾数分为整数部分与小数部分 浮点数用二进制表示可分为整数部分与小数部分,都包含在尾数部分。整数部分用2的整数次幂表示,这个整数次幂即是指数部分的值减去127,此处为5,从尾数开始向右数5位,即二进制整数部分与小数部分的分界线,也就是图中小数点的位置,小数点左边为整数,右边为小数。

(3)计算整数部分 浮点数中,尾数的表示形式为1.xxx…,存储时省去了小数点前的1。因此,还原整数时,应将1添加进去,整数部分在“01010”的5个二进制位前面再加1,结果为“101010”,即整数部分的值为42。

(4)计算小数部分 指数在尾数中确定整数与小数部分的分界线后,从尾数的开始处向右移5个指数位,得到小数的起始位置,然后按二进制的运算方法计算小数的值,即对各个位进行累加1×(1/2 2 )+1×(1/2 3 )+1×(1/2 4 )+1×(1/2 6 )+1×(1/2 9 )+1×(1/2 10 )+1×(1/2 11 )+1×(1/2 12 )+1×(1/2 13 )+1×(1/2 14 )+1×(1/2 16 ),最终值为0.456985474。

(5)合成为浮点型数值 整数部分加上小数部分得到整个浮点数的绝对值,再乘以符号位,得到完整浮点数的值,即(-1)×(42+0.456985474)=-42.456985474。可参考二维码视频讲解。

2.4.2 MCGSE转换过程

了解了十进制浮点型数据与浮点型数据在计算机中的二进制存储形式之间的变换关系后,可以在MCGSE中实现这个转换过程,具体步骤如下:

(1)布置窗口 启动MCGSE程序后,出现如图2-12所示界面,点击“新建窗口”按钮,出现“窗口0”,点击右侧的“窗口属性”按钮,在“窗口名称”中输入“串口自发自收演示”字符串对窗口进行命名。双击“串口自发自收演示”进入动画组态界面。“串口自发自收演示”如同一张白纸,用户可以从图2-13所示的工具箱中选取构件添加到窗口中,当鼠标指向某个构件时,会弹出提示信息,鼠标变成“十”字形,在窗口上点击鼠标左键,然后向右下角拖拉鼠标,达到指定大小时,释放鼠标左键,这时所选中的构件便放在了窗口中。此例分别向窗口添加了标签构件、输入框构件和标准按钮构件。可参考二维码视频讲解。

图2-12 MCGSE主界面图

图2-13 MCGSE的工具箱

按图2-14所示界面布置各个构件,设定各个标准按钮与标签的显示文本。输入框既可以用于信息的输入,也可以用于显示(相当于标签)。

图2-14 MCGSE动画组态窗口

(2)定义各个变量 窗口中的构件需要与变量进行关联,能够实时反映变量值的变化。因此,需要在实时数据库中建立相应的变量,用于计算、存储和显示,如图2-15所示。每一个变量包括其名字、类型和注释,名字用于在程序脚本中引用,类型是数据结构,注释方便用户记忆与使用。如图2-16所示,定义“Len”变量时,可以对其设置数据类型、赋初值、设定范围、添加注释等,变量一旦被定义,便可以与标签、输入框等界面构件进行关联。可参考二维码视频讲解。

图2-15 实时数据库中各变量类型及注释窗口

图2-16 数据对象属性设置窗口

(3)变量与关系式链接 双击组态窗口中整数下方的输入框构件,弹出如图2-17所示的界面,输入框构件可以关联变量,点击“?”按钮,在数据库中选中要关联的变量,这个输入框构件便与变量联系在一起,变量值改变,输入框构件内的值发生相应变化,同理,用户在输入框构件内输入新值,数据库中的变量也会实时更新。

图2-17 输入框构件与变量链接窗口

标签构件与输入框构件有区别,可以关联表达式,点击“?”按钮后可以输入变量、函数组成的表达式,如图2-18所示,比输入框构件更加灵活,此处的“浮点数(二进制)”“指数(二进制)”和“尾数(二进制)”等构件都与表达式进行了关联。

图2-18 标签与表达式链接窗口

图2-19采用黑色边框指示了输入框构件关联的变量和标签构件关联的表达式,用户可以根据需要自行添加或删除,只要保证输入框构件与变量类型、标签构件与表达式类型相一致即可,例如,要显示数值型数据,则变量或表达式必须为数值型,而不能是符号型或开关型。可上方参考二维码视频讲解。

图2-19 输入框构件与变量及标签与表达式关联示意图

(4)编写转换代码 双击按钮构件,如图2-20所示,在“脚本程序”页中选中“抬起脚本”,添加代码,称为脚本程序。

图2-20 标准按钮构件属性设置界面

脚本的完整代码如下:

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  '变量的初始化及计算
  二进制=!I2Bin(!Hex2I(数据))
  指数=!Bin2I(!mid(二进制,2,8))-127
  IF指数>=0 then
   整数=!Bin2I(!left("1"+!right(二进制,23),指数+1))
  ELSE
   整数=0.0
  ENDIF
 
  '根据浮点数二进制的首位确定数值的正负
  if !StrComp(!Left(二进制,1),"1")=0 then
   Sign=-1.0
  else
   Sign=1.0
  endif
 
  '循环前各变量赋初值
  Len=!Len(!I2Bin(!Hex2I(数据)))
  IF指数>=0 THEN
   Start=1+8+1+指数
  ELSE
   Start=1+8+1
  ENDIF
 
  IF指数>=0 then
   n=Len-Start
   i=1
   小数=0.0
  ELSE
   n=23+指数
   i=1
  小数=2^指数
  ENDIF
 
  '循环计算浮点数小数部分的值
  WHILE (n>0)
   IF指数>=0 THEN
    小数=小数+!Val(!mid(二进制,Start,1))/2^i
  ELSE
    小数=小数+!Val(!mid(二进制,Start,1))*2^(指数-i)
   ENDIF
   i=i+1
   n=n-1
   Start=Start+1
  ENDWHILE
 
  '获得浮点数的数值
  浮点数=整数+小数
  浮点数=浮点数*Sign

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

(5)运行程序 点击MCGSE工具栏中的“ ”按钮,下载工程并进入运行环境,程序执行后如图2-21所示。将鼠标放在“浮点数(16进制)”后面的输入框中,会弹出界面键盘,输入“C229D3F4”,中间不能有空格,点击“16进制->浮点数”按钮,脚本程序开始执行,各个变量经过计算得到相应的值,与变量关联的标签和输入框构件实时显示变量的值,从而出现图2-21所示的结果。可参考二维码视频讲解。

图2-21 程序执行界面 Hzkf6Xkihw/ClTuwFjIWGwuM1OFD1pfoqCkc8knpSVuSkTUevQGooQnHGubo1iF7

点击中间区域
呼出菜单
上一章
目录
下一章
×