问题描述
我有大约20条消息定义为结构,并且对于每条消息,我都有许多信号(不是dbc的确切信号名称),我已将其定义为XML文件中的系统变量。
在CAPL中,如果我搜索@sysvar,我会同时看到我的信号名和名称空间(消息名)。
现在,我需要创建一个函数,在其中需要更改信号的值。为此,我需要传递结构(名称空间)名称,其信号名称和值将作为参数写入。
我无法执行此操作。
任何人都可以帮助我如何将XML中定义的名称空间和信号名称作为CAPL中的参数进行传递。
XML的格式是
<?xml version="1.0" encoding="utf-8"?>
<systemvariables version="4">
<namespace name="" comment="" interface="">
<namespace name="XYZ" comment="" interface="">
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="ABC" comment="" bitcount="32" isSigned="false" encoding="65001" type="int" startValue="1" />
</namespace>
</namespace>
</systemvariables>
解决方法
选项1 您只需要简单地设置sysVar?
Set rs=c.Execute(“SELECT * FROM Customers" & _
WHERE Country='Germany' AND (City='Berlin' OR City='München');”)"
选项2 您是否需要使用sysvar的函数?
@<sys> = 12; //ex @XYZ::ABC = 1 OR @sysvar::<sys> = 12; // @sysvar::XYZ::ABC
选项3 您是否需要使用sysvar 名称名称的功能?
要实现此目的,您可以使用内置函数lookupSysvar。
//Function Definition
void FunctionWithSysVariableAsParameter(sysvarInt *sys,int valueToAssign)
{
@sys = valueToAssign;
}
//Usage Example
on start
{
FunctionWithSysVariableAsParameter(sysvar::XYZ::ABC,12);
write("%d",@XYZ::ABC);
}