Получение списка всех активных сообщений в CAN-шине

Я только учусь использовать CAPL на CANoe, и мне нужно создать шлюз, который фильтрует сообщения между двумя шинами CAN.

Для первой части мне нужно создать способ переключения передачи с шины 1 на шину 2 и наоборот (уже сделано).

Затем я должен иметь возможность выбрать конкретное сообщение из любого автобуса, чтобы отправить его на другой автобус. Все это должно быть выполнено графически с помощью панели, и я использую флажки для переключения части 1 и раскрывающиеся списки для фильтра сообщений.

Вы знаете способ получить список активных (Rx / Tx) сообщений в шине за последние, скажем, 10 секунд? (Я знаю, что должен использовать таймер для вызова функции обновления)


person mrLucius    schedule 05.02.2016    source источник


Ответы (1)


Вы можете подписаться на все сообщения с шины, определив обработчик событий on message. Он будет вызываться для каждого сообщения (в зависимости от указанного вами условия фильтрации). Вы можете создать шлюз, повторно передавая сообщения с помощью output.

Например, ваша графическая панель может установить переменную my_id на идентификатор сообщения, которое вы хотите ретранслировать с шины 1 на шину 2. Затем вы можете написать:

on message CAN1.*
{
   message CAN2.* msg;
   if((this.dir == rx) && (this.id == my_id)) {
       msg = this;
       output(msg);
   }
}

Дополнительное условие this.dir == rx необходимо, если вы хотите передать одно и то же сообщение с шины 1 на шину 2 и наоборот. Это предотвратит повторную передачу одного и того же сообщения бесконечно.

person Dmitry Grigoryev    schedule 23.02.2016