Отправка сообщения со значениями сигналов CAPL и dbc

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

Я могу читать значения сигналов с помощью $ SignalName, а также могу устанавливать такие значения сигналов.

Если я использую этот код для отправки сообщения, данные сообщения всегда равны 0:

on key 't'
{
  message MessageName msg;
  setSignal(SignalName,i);
  write("Value: %d",i);
  outport(msg);
}

Witch делает вид, потому что я думаю, что объекты сообщений предназначены для использования для отправки байтов, к которым вы можете получить доступ через msg.byte ()

Я знаю, что могу устанавливать сигналы в сообщениях с помощью msg.SignalName, но, опять же, это кажется неправильным. Я думаю, что должен быть способ отправить сообщение, и все сигналы, содержащиеся в сообщении, устанавливаются на значения, установленные функцией SetSignal (). В противном случае SetSignal Funktion немного бесполезен

Может у кого-то есть идея. Спасибо


person Raros    schedule 03.05.2017    source источник


Ответы (2)


Я использую CANalyzer версии 8.2, и у меня нет возможности использовать функцию SetSignal (сигнал, значение). Установка значений сигнала путем доступа к селекторам сообщений кажется разумным подходом. Однако вы использовали функцию outport! Вам нужно использовать функцию вывода для передачи сообщений.

on key 't' {
  message MessageName msg;
  msg.signal1 = value1;
  output(msg);
}

Для этого метода база данных должна быть настроена так, чтобы сообщение msg содержало все необходимые сигналы (signal1).

Если вы хотите установить для всех значений сигналов начальные значения, настроенные в базе данных, используйте функцию:

setSignalStartValues(message msg);
person BruceWayne    schedule 29.09.2017

Вы можете настроить уровень взаимодействия, который будет обрабатывать сообщения, как определено в базе данных CAN (файл DBC), назначенной узлу. Слой взаимодействия потребует некоторых атрибутов в базе данных, чтобы определить, как должны отправляться сообщения. Если их еще нет, возможно, вам придется добавить эти атрибуты. Если сообщения Tx не отправляются должным образом, проверьте атрибуты.

Функция output () полезна, если вы хотите реализовать (и полностью контролировать) отправку сообщения самостоятельно.

Вместо использования SetSignal () также можно записать сигнал с помощью $SignalName = value;

См. Это примечание поддержки:

https://kb.vector.com/upload_551/file/SN-IND-1-011_InteractionLayer(1).pdf

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

person Bodo    schedule 22.11.2018