CAPL Доступ к целочисленному сигналу с более чем 52 битами

Вопрос по поводу доступа к сигналу CAPL. Предположим, что в коде присутствует 64-битный целочисленный сигнал без знака от некоторого PDU.

При попытке присвоить значение сигнала переменной sysvar или qword, например:

@sysvar::bar = $foo;

Появляется предупреждение:

CAPL / .NET Accessing integer signal '[...]/foo' with more than 52 bits, possible loss of data!

В справке CANoe относительно предупреждения 2808 я обнаружил, что

In $ instructions only integer signals with up to 52 bits can be used without data loss, as values are saved and disclosed internally as doubles.

Вы знаете, как мне присвоить 64-битное целочисленное значение сигнала без знака без потери данных?


person Juhas    schedule 18.02.2021    source источник


Ответы (1)


Нашел решение в документации:

Из-за типа данных double .raw не возвращает точные значения для сигналов длиннее 52 бит. Пожалуйста, используйте для этих длин сигналов .raw64 с типом данных int64.

int64 largeValue;
largeValue = $Some64bitSignal.raw64;
person Juhas    schedule 18.02.2021