在 CAPL CANalyzer

问题描述

我正在编写一段代码来模拟一些诊断内容。

我使用 CANalyzer 创建了一个面板,其中包含需要使用选项列表(称为组合框)显示的大量信息

This is the panel I've created

This is the struct that I've created using the System Variables panel in CANalyzer

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

如果不为每个元素做大量的 SysSetVariableInt 或 SysSetVariableString,这可能吗?

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

为了填充选择列表,我发现了一个非常好的方法“sysSetVariableDescriptionForValue”,它有助于添加元素,但此方法的问题在于,如果您想更改元素,则只能覆盖,而不是全部更改。 ..所以,如果在下一次迭代中你在选择列表中推送较少的元素,你也会看到旧的元素。

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

我很想用另一种方法来做这件事,也许结构是可能的......我真的不知道。

任何帮助将不胜感激!

问候!

解决方法

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


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

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

我想做的是创建一个巨大的结构数组,需要 使用 SPN 组合框(选择列表)选择,另一个 结构体/对象的参数需要填充其他元素 面板的。这可能不做一吨 每个元素的 SysSetVariableInt 还是 SysSetVariableString?

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

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...