Помещение значения сигнала в переменную в CAPL
Я пытаюсь получить значение сигнала (из файла DBC) в переменную, но я получаю сообщение "Должно быть постоянное выражение". Если я попытаюсь добавить фильтр как .DefaultValue
, это работает, но это не то значение, которое я хочу. Я хочу получить значение сигнала во время вызова этой функции CAPL. Вот пример:
float Cell_Voltage = Mc00_UCell00;
(это где я получаю ошибку должно быть константным выражением)
float Cell_Voltage = Mc00_UCell00.DefaultValue;
(это работает, но я не хочу значение по умолчанию)
Есть ли фильтр для вытягивания текущего значения сигнала Mc00_UCell0
?
2 ответа
В CAPL, чтобы получить целое число от значения сигнала с плавающей запятой, вы должны написать
float Cell_Voltage = $Mc00_UCell00;
Это называется "Прямой доступ к значениям сигнала"
Вы говорите следующие работы:
float Cell_Voltage = Mc00_UCell00.DefaultValue;
и следующее не работает:
float Cell_Voltage = Mc00_UCell00;
Обратите внимание, что в C и многих других языках точка указывает, что из структуры осуществляется доступ к члену. Это будет означать, что в рабочем примере вы получаете доступ к члену и назначаете его Cell_Voltage
и в нерабочем примере вы хотите присвоить целую структуру простой переменной, и это действительно не сработает.
Решите, какой элемент структуры вам нужен, и укажите это с помощью точечной нотации.