xml - 是否可以将 XML 中定义的系统变量作为 CAPL 中的函数参数传递
问题描述
我将大约 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>
我需要将名称和命名空间作为参数传递给 CAPL 函数吗?这可能吗
解决方案
选项 1 您是否只需要简单地设置您的 sysVar?
@<sys> = 12; //ex @XYZ::ABC = 1 OR @sysvar::<sys> = 12; // @sysvar::XYZ::ABC
选项 2 你需要使用 sysvar 的函数吗?
//Function Definition
void FunctionWithSysVariableAsParameter(sysvarInt *sys,int valueToAssign)
{
@sys = valueToAssign;
}
//Usage Example
on start
{
FunctionWithSysVariableAsParameter(sysvar::XYZ::ABC,12);
write("%d",@XYZ::ABC);
}
选项 3 你需要使用 sysvar名称的函数吗?
为此,您可以使用内置函数lookupSysvar。
//Function Definition
void FunctionWithSysVariableNameAsParameter(char sysVarNamespace[],char variableName[],int valueToAssign)
{
sysvarInt * myLocalSysvar;
myLocalSysvar = lookupSysvarInt(sysVarNamespace,variableName);
@myLocalSysvar = valueToAssign;
}
//Usage Example
on start
{
FunctionWithSysVariableNameAsParameter("XYZ","ABC",15);
write("%d",@XYZ::ABC);
}
推荐阅读
- r - Partially suppress labels in R
- java - 为什么生成的带有 PDF 框的 PDF 表单与多行文本框结果在云服务器上看起来不同?
- ios - 自定义 UINavigationBar 渐变背景和徽标中的图像
- three.js - aframe,TransformControls 不适用于 3D 对象
- asp.net-core - 请求正文太大 - Kestrel - 在 context.Request.Body.CopyToAsync 失败
- node.js - 即使没有人在做请求,Nodemon 也会继续记录中间件的内容
- regex - 正则表达式搜索多个字符串垃圾邮件
- javascript - 对 GraphQl 查询不区分大小写进行排序
- java - 无法绑定“spring.rabbitmq”下的属性
- rest - 为什么每当我尝试将 rest 运算符作为参数输入箭头函数时,vscode 的智能感知一直在执行代码完成?