我正在尝试通过以下接口使用库定义的函数(用于交叉控制产品的CCaux):
FUNCTION Lightsensor_GetIlluminance : eErr (* return error status. 0 ERR_SUCCESS, otherwise error code.*)
VAR_OUTPUT
value: UINT;(*Illuminace value (Lux)*)
END_VAR
我似乎找不到从输出变量中获取“值”的正确语法。这是我程序中的内容:
VAR
illumen : UINT;
END_VAR
在我想将illumen
设置为Lightsensor_GetIlluminace
的输出变量的位置。以下内容无效,因为它将变量设置为eErr
:
illumen := CCAux.Lightsensor_GetIlluminance();
并且:
illumen := CCAux.Lightsensor_GetIlluminance.value;
不起作用,因为出现错误'value' is no input of 'Lightsensor_GetIlluminance'
并且:
illumen := CCAux.Lightsensor_GetIlluminance(value := illumen);
失败,因为Lightsensor_GetIlluminance take exactly '0' inputs
我将CoDeSys用于上下文。
答案 0 :(得分:2)
这是带有附加输出的函数的语法:
<function> (<function output variable1> => <output variable 1>, <function output variable n> => <output variable n>)
以下代码应返回“照度值”:
CCAux.Lightsensor_GetIlluminance(value => illumen);
答案 1 :(得分:0)
如果您有这样的输出变量
public void enableTextChangedListener(boolean enableFormatting){
if (enableFormatting) {
if (!"1".equals(mAmountEditText.getTag())) {
mAmountEditText.addTextChangedListener(new StringUtils.NumberTextWatcherForThousand(mAmountEditText));
mAmountEditText.setTag("1");
}
}
else {
mAmountEditText.removeTextChangedListener(new StringUtils.NumberTextWatcherForThousand(mAmountEditText));
}
}
然后在代码中,您可以像这样使用其他变量。
FUNCTION Lightsensor_GetIlluminance : eErr
VAR_OUTPUT
value: UINT;
END_VAR
或者,如果您创建eErr := Lightsensor_GetIlluminance(value => illumen);
,则除了上面的方法外,您还可以使用类似的方法。
FUNCTION_BLOCK
在代码中
FUNCTION_BLOCK Lightsensor_GetIlluminance
VAR_OUTPUT
value: UINT;
error : eErr;
END_VAR
因此您可以通过Lightsensor_GetIlluminance();
IF NOT Lightsensor_GetIlluminance.error THEN
illumen := Lightsensor_GetIlluminance.value;
END_IF;
访问变量,但必须提前致电FB。