FRUpdatePDU () не отправляет другой экземпляр PDU, он просто обновляет следующую итерацию данными из объекта frPDU, поскольку мы говорим о PDU статического кадра, как только VN начинает отправлять его, вы не можете его остановитьиндивидуально по контролю PDU.
Frame против PDU Кадр - это физический Flexray Frame в сети.PDU - это виртуализация части (или всей) полезной нагрузки кадра.Аналогия: почтовый грузовик - это рама FlexRay, а коробки в нем - PDU.Для почтовой службы (Flexray Protocol - OSI layer 1) важным элементом является сам грузовик, а для вас (клиента) - коробки в нем.Вас никогда не заинтересует, какой грузовик доставлял ваши вкусности в коробке, вас интересует только сам контент.
Когда вы вызываете FrUpdatePDU (), вы не только начинаете отправлять PDU, но вы также активируете (отправляете ненулевые кадры) его слот.Установив кадр под ненулевым кадром, вы гарантировали (в случае статического кадра), что он будет отправляться циклически из этой точки автоматически, независимо от того, что вы хотите сделать с PDU (грузовики едут в любом случае, дажеесли вы не хотите отправлять коробки в них).
Решение: Полагаю, у вас нет IL-библиотек IL, чтобы помочь вам, поэтому вы ограничены функциями, которые среда CANoe предоставляет в качестве общих функций FlexRay IL.
- Вам необходимо идентифицировать кадр, несущий PDU.
- Вам также нужно управлять кадром с помощью frUpdateStatFrame ().
frframe FramefromDBCofTEMPPDU InstanceofFrameTemp;
на frStartCycle * {
if (@FR_namespace::TEMP_Enablebutton==1)
{
mframe.fr_flags=0x0;
frUpdateStatFrame(mframe);
TEMP_Pdu.byte(0xAA);
FrUpdatePDU(TEMP_Pdu, 1, 1));
}
else
{
mframe.fr_flags=0x80;
frUpdateStatFrame(mframe);
}
}
Таким образом, на самом деле вам также необходимо изменить рамку.Что касается флагов фреймов, ознакомьтесь с определением фрейма в справке.