CAPL 访问超过 52 位的整数信号

问题描述

问题是关于 CAPL 信号访问。让我们假设在代码中有来自某个 PDU 的 64 位无符号整数信号。

尝试将信号值分配给 sysvarqword 变量时,例如:

@sysvar::bar = $foo;

出现警告:

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

在关于警告 2808 的 CANoe 帮助中,我发现

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 位无符号整数信号值吗?

解决方法

在文档中找到了解决方案:

由于数据类型为 double,.raw 不会返回准确的值 信号长度超过 52 位。请使用这些信号长度 .raw64 数据类型为 int64

int64 largeValue;
largeValue = $Some64bitSignal.raw64;