Проблемы при использовании CANoe COM-сервера с C # - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь выполнить некоторые функции CAPL в определенной конфигурации CANoe через сервер CANoe-COM в C #. Но я сталкиваюсь с ошибками.

Здесь я объявляю объекты двух классов на сервере CANoe-COM: Application (для открытия конфигурации CANoe) и CAPLFunction (для запуска некоторых функций CAPL в конфигурации, скажем, для открытия панели), в прессе кнопки в простой форме Windows. Код выглядит следующим образом:

    private void button1_Click(object sender, EventArgs e)
    {
        CANoe.Application CANoe_big = new CANoe.Application();
        CANoe_big.Open(@"All_neu.cfg");

        CANoe.CAPLFunction Neu = new CANoe.CAPLFunction();

    }

Когда я печатаю эти функции в Visual Studio, ошибки не отображаются. Даже при запуске программы форма отображается, и при нажатии на кнопку также открывается конфигурация «All_Neu.cfg». Но после этого система выдает эту ошибку: «Класс не зарегистрирован, HRESULT: REGDB_E_CLASSNOTREG». И он выделяет строку, объявляющую объект CAPLFunction при выдаче ошибки.

Что странно, потому что не должно быть проблем, верно? Я имею в виду, конфигурация CANoe открывается правильно, поэтому сервер CANoe-COM жив и работает.

Фактически, я заметил, что любой объект буквально ЛЮБОГО другого класса в COM-сервере, например Bus или Write, приводит к той же ошибке. Конфигурация открывается, но после этого ничего.

Есть идеи, почему это происходит?

1 Ответ

0 голосов
/ 26 марта 2019

Вы не можете создать свободно плавающий, пустой объект CAPLFunction.

Функция CAPL должна присутствовать в только что открытой конфигурации.После этого вы можете получить его по

var caplFunc = CANoe_big.CAPL.GetFunction("<functionname>");

Затем вы можете выполнить его, позвонив по номеру

caplFunc.Call(...);

Проверить деталь под названием Технические ссылки -> COMИнтерфейс -> Иерархия объектов в документации CANoe.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...