有人知道为什么CR1000.Std.32.02中的“ConstTable”指令要输入最接近的整数吗?这种行为在用户手册、编辑器帮助文件或本论坛中没有描述,但可以复制:
1.运行程序CR1000.Std.32.02包含命名常量表:
ConstTable(常量)'HINT named so可以通过LoggerNet修改Const UTC_OFFSET = -8 'hrs,记录器相对UTC时间的偏移Const WXT_AZIMUTH = 0 '朝向w.r.t.真北,度Const PAR_MULT = 0 '唯一的传感器校准,umol/(mV s m^2) - NEGATIVE for li190sa的连接惯例EndConstTable
2.连接使用LoggerNet 4.5连接应用程序
3.查看常量表
4.输入"-197.63"到' PAR_MULT '字段。
5.观察值转换为“-198”
6.从记录器中检索程序文件。
7.确认常数已更新为-198。
当程序编译时,编译器从表达式中确定常量的类型(例如Long, Float, Boolean)。该数据类型与软件通信。软件根据记录器与之通信的数据类型对输入进行格式化或限制。在本例中,数据记录器将常量存储为Long类型。该软件随后将输入限制为整数。
可以声明带有或不带有指定数据类型的常量。如果未指定数据类型,则t编译器根据表达式的类型确定常量的类型。的数字整数字面值默认转换为长数据类型。浮点数的默认数据类型是浮动,以及关键词真正的和假指定一个布尔常数。
可以强制将文字存储为特定的数据类型。你可以使用As语法来表示常量应该被视为As Long, As Float,等等。或者,您可以以一种提示编译器采用不同格式的格式提供数字。例如,0.0而不是0。
所以下面的一个(或多个)会导致你之后的行为。
Const PAR_MULT As Float = 0
Const PAR_MULT = 0.0
Thank you Sam! This is precisely the info I was missing.
嗯,这个能力有个漏洞。如果常量以0结尾,如-1.0,则它将被视为整数。
-1.0 - > 1
-1.1 - > -1.1