【问题标题】:Use of struct in CAPL CANalyzer在 CAPL CANalyzer 中使用 struct
【发布时间】:2021-05-07 09:34:41
【问题描述】:

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

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

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

如果不为每个元素执行大量 SysSetVariableInt 或 SysSetVariableString,这是否可行?

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

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

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

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

任何帮助将不胜感激!

问候!

【问题讨论】:

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

标签: vector struct diagnostics capl canalyzer


【解决方案1】:

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


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

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

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

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

专业人士:无需编写复杂的 CAPL 脚本并在每次变量更改时更新它。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    • 2012-04-23
    相关资源
    最近更新 更多