【发布时间】:2020-12-05 11:09:02
【问题描述】:
我正在尝试在 C# 程序中使用 COM 服务器接口 在 Canoe 项目中运行特定的测试模块。 -----> 鉴于:我正在使用
- Vector-Canoe 11 - SP3(64 位)。
- Visual Studio 2017。
我尝试遵循 Vector-Canoe 技术帮助中的 COM 对象层次结构,但我不断收到异常(例如:在对象 Y)。
我搜索了很多,但似乎以前没有人遇到过这个问题。
最后,我决定将对象的名称打印到控制台窗口,结果发现我在控制台窗口输出的名称不匹配提到的对象名称在 Vector-Canoe 技术帮助中。例如,我得到:
-
ICAPL5 而不是 CAPL
和 - ITestEnvironments 而不是 TestEnvironments 和
- ITestEnvironment2 而不是 TestEnvironment - 等等....
这是我的 C# 代码 sn-ps:
using System;
using Vector.Tools;
using Vector.CANoe.Runtime;
using Vector.CANoe.Sockets;
using Vector.CANoe.Threading;
using Vector.Diagnostics;
using Vector.Scripting.UI;
using Vector.CANoe.TFS;
using Vector.CANoe.VTS;
using ASAM.HILAPI.Interfaces;
using ASAM.HILAPI.Implementation;
using Vector.CANoe.ASAM.HILAPI;
using NetworkDB;
using System.IO;
public class Canoe_autoFlash : TestModule
{
private CANoe.Application mCANoeApp;
private CANoe.Measurement mCANoeMeasurement;
private CANoe.CAPL CANoeCAPL;
private CANoe.TestEnvironments mTestEnvironments;
public Canoe_autoFlash() // Constructor
{
//1. Initialize mCANoeApp:
mCANoeApp = new CANoe.Application();
//2. Initialize mCANoeMeasurement:
mCANoeMeasurement = (CANoe.Measurement) mCANoeApp.Measurement;
Console.WriteLine("mCANoeMeasurement object: " + Microsoft.VisualBasic.Information.TypeName(mCANoeMeasurement));
//3. Initialize CANoeCAPL:
CANoeCAPL = (CANoe.CAPL) mCANoeApp.CAPL;
Console.WriteLine("CANoeCAPL object: " + Microsoft.VisualBasic.Information.TypeName(CANoeCAPL));
//4. Initialize mTestEnvironments:
mTestEnvironments = (CANoe.TestEnvironments) mCANoeApp.Configuration.TestSetup.TestEnvironments;
}
public void get_actual_objects_names() // This function is for debugging
{
Console.WriteLine("mTestEnvironments object: " + Microsoft.VisualBasic.Information.TypeName(mTestEnvironments));
Console.WriteLine("TestEnvironment object: " + Microsoft.VisualBasic.Information.TypeName(mTestEnvironments[1]));
Console.WriteLine("TestEnvironment object Item 1 name : " + ((CANoe.TestEnvironment) mTestEnvironments[1]).Name );
}
这是显示奇怪对象名称的控制台窗口输出:
mCANoeMeasurement object: MeasurementClass
CANoeCAPL object: ICAPL5
Number of Test Envs = 1
mTestEnvironments object: ITestEnvironments
TestEnvironment object: ITestEnvironment2
这是由于以下代码行而导致的异常:
Console.WriteLine("TestEnvironment object Item 1 name : " + ((CANoe.TestEnvironment) mTestEnvironments[1]).Name );
例外情况是: System.Runtime.InteropServices.COMException: '未找到测试环境对象。'
如果您让我了解这些奇怪的对象名称背后的原因以及如何获取正确的对象,我将不胜感激,这样我在 Vector-Canoe 帮助中遵循对象层次结构时就不会遇到问题
【问题讨论】:
-
您好,欢迎来到堆栈溢出。您的帖子出现在审核队列中,因此我修复了您的代码格式以使其可读。有关格式指南,请参阅 How do I format my code blocks?。我还添加了必要的标签canoe。由于您对一个非常具体的主题有疑问,因此您需要正确标记它以吸引该主题的专家。请参阅:What are tags, and how should I use them?。祝你好运。
-
您还写道,这是由于代码行引起的异常——但我没有看到异常,只有代码本身。请edit您的帖子包含异常的完整
ToString()输出(作为文本,而不是作为图像),包括异常类型、消息、回溯和内部异常(如果有)? -
我添加了例外,非常感谢。我希望我能得到解决方案