C# COM 中的 SysVar 与 CANoe

问题描述 投票:0回答:1

我尝试用 C# 与 CANoe 进行通信,但出现一些错误。

我有这个设置来打开并启动(⚡)CANoe APP,并且它工作正常:

私有CANoe.Application CANoeApp; 私人无效按钮OpenStartCanoe_Click(对象发送者,EventArgs e) { 尝试 { CANoeApp = (CANoe.Application)Marshal.GetActiveObject("CANoe.Application"); } 捕获(COM异常) { CANoeApp = new CANoe.Application(); } }

现在我想修改并读取系统变量中的值,我尝试了在互联网上找到的几个选项,但没有一个起作用。 命名空间 “Debug” 是我的变量所在的位置,我的变量的名称是 “Target_Level_ALL”

如果有人知道如何从 C# 修改 Canoe 中的系统变量将会非常有帮助,因为我已经尝试过非常不同的代码,但没有一个有效。

我已经尝试过的一些代码如下:

  1. 这里的问题是 GetSysVar 在 LINBus 中不可用:

    CANoe.Application CANoeApp = (CANoe.Application)Marshal.GetActiveObject("CANoe.Application"); CANoe.Measurement测量 = CANoeApp.Measurement;

    CANoe.Bus LINBus = CANoeApp.get_Bus("LIN"); CANoe.Variable sysVar = LINBus.GetSysVar("调试", "Target_Level_ALL"); sysVar.Value = 100;

  2. 我尝试使用.Configurations,但都不可用:

    measurement.Configurations.System.SysVar["Debug.Target_Level_ALL"].Value = 100;

  3. 如果我尝试直接使用应用程序对象中的 SysVar,也会出现同样的问题

    CANoeApp.SysVar["Debug.Target_Level_ALL"].Value = 100;

  4. 我尝试使用 canoe.system.system 但结果相同,但不起作用

    Canoe.System.System 系统 = new Canoe.System.System();

    system.SetVariableValue("Debug.Target_Level_ALL", 100);

更新:我正在尝试使用这个新代码,但仍然没有在CANoe环境中找到系统变量:(TableSel是我的NameSpace,Target_Color是我的变量)

CANoe.Environment CANoeEnvironment = CANoe.Environment)CANoeApp.Environment;

CANoe.EnvironmentVariable envVar = (CANoe.EnvironmentVariable)CANoeEnvironment.GetVariable("TableSel.Target_Color");

对象值 = envVar.Value;

envVar.Value = 3;

任何帮助都会非常受欢迎:) 谢谢,祝你有美好的一天

c# com canoe system-variable
1个回答
0
投票

更新很少, 我从 Vector 找到了一份文档,我修改了一些行,以便使用接下来的代码行成功读取 CANoe 系统变量:

CANoe.System CANoeSystem = (CANoe.System)CANoeApp.System;
CANoe.Namespaces CANoeNamespaces = (CANoe.Namespaces)CANoeSystem.Namespaces;
CANoe.Namespace CANoeNamespaceGeneral = (CANoe.Namespace)CANoeNamespaces["Debug"];
CANoe.Variables CANoeVariablesGeneral = (CANoe.Variables)CANoeNamespaceGeneral.Variables;
CANoe.Variable sysVar = (CANoe.Variable)CANoeVariablesGeneral["Target_Level"];
Console.WriteLine($"Value Target_Level: " + sysVar.Value);

还有这些编辑系统变量:

CANoe.Measurement CANoeMeasurement = (CANoe.Measurement)CANoeApp.Measurement;
CANoe.Namespace CANoeNamespaceDebug = (CANoe.Namespace)CANoeNamespaces["Debug"];
CANoe.Variables CANoeVariablesDebug = (CANoe.Variables)CANoeNamespaceDebug.Variables;
CANoe.Variable sysVarTargetLevel = (CANoe.Variable)CANoeVariablesDebug["Target_Level"];
sysVarTargetLevel.Value = 20;

我希望将来可以通过这些信息帮助别人。

© www.soinside.com 2019 - 2024. All rights reserved.