Сообщение декодирования CAN Busmaster DataField - PullRequest
0 голосов
/ 22 ноября 2018

Мне нужно проанализировать и декодировать поле данных из сообщения CAN.

Я отправил переданный запрос и получил поле данных:

02 01 20 0000 00 00 00

Теперь мне нужно декодировать его в ПЕРЕКЛЮЧАТЕЛЕ, первый байт - это длина (02), но как я разделяю все поле данных на отдельные байты и затем беру их 1 на 1расшифровать?

1 Ответ

0 голосов
/ 23 ноября 2018

Я не знаю протокол SWITCH, но я могу помочь вам получить доступ к байту за байтом полезной нагрузки интересующего вас сообщения. Допустим, ваш идентификатор сообщения равен 0x100 (или у вас есть его имя по базе данных dbc, ваш вызов).определить сообщение).

Если вы работаете в тестовой среде (тестовый узел, такой как тестовый узел CAPL / XML), вы можете определить тестовый сценарий / функцию и в ней следующую последовательность:

message 0x100 MessageContainer;

тогда вы ждете своего сообщения в точке, где вы ожидаете, что полезная нагрузка будет вам по вкусу:

...,,.

testwaitformessage(0x100,cycletimeofMessage);  /*Cycletime the message has, or maximum time you expect your message to arrive*/
testGetWaitEventMsgData(MessageContainer); /*the message object MessageContainer will be filled with the content of the message catched early in testwaitformessage()*/

write("%X",MessageContainer.byte(0)); /*you access the bytes through the .byte selector field of the message object and do whatever you wish with it.*/

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

on message 0x100
{
write("The first byte of the captured message 0x100 is 0x%X",this.byte(0));
}

Конечно, эта процедура по событию работает и в тестовых средах.

...