Vector struct在CAPL运河分析仪中的应用

Vector struct在CAPL运河分析仪中的应用,vector,struct,diagnostics,capl,canalyzer,Vector,Struct,Diagnostics,Capl,Canalyzer,我正在写一段代码来模拟一些诊断的东西 我使用CANalyzer创建了一个面板,其中包含大量信息,需要使用选择列表(称为combobox)显示这些信息 我想做的是创建一个需要使用SPN组合框(picklist)选择的结构的巨大数组,并且结构/对象的其他参数需要填充面板的其他元素 这是否可以在不为每个元素执行大量SysSetVariableInt或SysSetVariableString的情况下实现 在我使用另一种技术做这件事之前,我用存储在一个巨大矩阵中的所有信息解析文件,然后对与SPN选取列

我正在写一段代码来模拟一些诊断的东西

我使用CANalyzer创建了一个面板,其中包含大量信息,需要使用选择列表(称为combobox)显示这些信息

我想做的是创建一个需要使用SPN组合框(picklist)选择的结构的巨大数组,并且结构/对象的其他参数需要填充面板的其他元素

这是否可以在不为每个元素执行大量SysSetVariableInt或SysSetVariableString的情况下实现

在我使用另一种技术做这件事之前,我用存储在一个巨大矩阵中的所有信息解析文件,然后对与SPN选取列表相关联的变量使用“on sysvar update”方法,以获取该变量的索引,因此我在矩阵中搜索该索引,然后使用
SysSetVariableInt
或其他方法,为面板中的元素设置值

为了填充picklist,我发现了一个非常好的方法“syssetvariablescriptionforvalue”,它可以帮助添加元素,但是这个方法的问题是,如果您想要更改元素,您可以只覆盖,而不是全部更改……因此,如果在下一次迭代中,您在picklist中推送的元素较少,您也会看到旧的元素

使用“sysSetVariableDescriptionForValue”,您基本上是通过代码编写该系统变量的值表,并且不可能(根据Vector)在运行时刷新…:/

我想用另一种方法做这件事,也许用struct是可能的…我真的不知道

任何帮助都将不胜感激


问候

TLDR;构建一个工具,从结构化输入(例如逗号分隔)创建
.sysvar
文件,运行它,获取
.sysvar
文件并将其链接到CANalyzer配置


我曾经不得不用软件的一些组件创建整个测试界面。我们没有一个结构化的发布过程,测试环境每次都是基于新的内部软件接口从头开始重建的。我也不得不添加数百个变量

我的解决方案是在CANalyzer之外以编程方式生成
.sysvar
文件。指向
.sysvar
文件的链接在CANalyzer配置中是符号化的,这意味着如果具有正确名称的文件位于正确的位置,则将加载该文件

我想做的是创建一个需要 使用SPN组合框(选择列表)和其他 结构/对象的参数需要填充其他元素 小组成员。如果不做大量的工作,这是可能的吗 每个元素的SysSetVariableInt或SysSetVariableString

创建一个外部脚本以生成
.sysvar
文件。最后,它只是一个xml文件,您可以研究您保存的演示文件的结构。然后,在CANalyzer配置中导入该文件。如果
.sysvar
文件发生更改,您可能需要关闭/重新打开配置

优点:无需编写复杂的CAPL脚本并在每次变量更改时进行更新


缺点:您必须拥有所有信息的来源,甚至是一个简单的excel表格,以及所有的描述等等,并且您必须创建一个接受输入文件的工具(假设是
.csv
文件)并将其转换为扩展名为
.sysvar
.xml
文件。

看起来您正在查找表。您知道所有可能的值,只需将它们编码到查找中,并在需要时加载所需的对。无论如何,阅读你的帖子是痛苦的。你能把它擦亮吗?减少文本,以便只说出重要信息。避免使用太多的形容词。不要将代码作为图片发布,而是发布一些代码。你过去已经这样做了,如果你愿意分享的话,也许我们可以重复使用它。在inline text.ciao守护进程中使用代码格式,问题是我有大约700个元素要添加到值表中。我已经写信给向量支持系统,他们没有其他解决方案。我使用了“sysSetVariableDescriptionForValue(“DiagnosticPanel”,“Diag_SPN”,t,string);”方法将所有内容以友好的方式添加到值表中…具有所有已知的限制(不能删除,只需覆盖)