Я использую CANalyzer.
Я передаю сообщение CAN, используя блок Interactive Generator. Я использую IG для изменения сигналов в передаваемом сообщении вручную.
Мне нужно автоматически вычислять контрольную сумму (последний байт в сообщении) каждый раз, когда сообщение отправляется. Контрольная сумма вычисляется из всех предыдущих байтов данных в сообщении (сообщение всегда имеет длину 8 байтов). В IG нет возможности сделать это.
мне нужно:
1. Установите сигналы вручную с помощью IG.
2. Автоматически вычислить значение последнего байта данных в соответствии со значениями предыдущих байтов данных.
Я пытался написать простой код на CAPL, но безуспешно.
Я поместил узел программы CAPL после узла IG в окне конфигурации и записал событие сообщения в сценарии CAPL:
on message FooMsg
{
message FooMsg msg1; // FooMsg is name of message in database
msg1 = this; // copy message from IG to temporary variable
// this.byte(7) = 0x11; // not posibble, compiler warning
msg1.byte(7) = 0x11; // constant value just for test
output(msg1); // send message
}
Сообщение передается, но период передачи, установленный в IG, не соблюдается (сообщение передается максимально быстро).
Я думал, что поймал сообщение, сгенерированное IG, изменил его и отправил на шину CAN.
Может кто-нибудь помочь, пожалуйста?
Я начинающий в CAPL.
Спасибо