CANalyzer CAPL: определить, находится ли шина в спящем режиме (нет сообщений на шине)

Я использую CANalyzer 7.0 и пытаюсь выяснить, как определить в CAPL, перешла ли шина CAN в спящий режим (сообщения больше не отправляются). Как я могу это сделать?

Я пытался прочитать BusLoad, используя sysGetVariableInt(), но он всегда возвращал ноль. Возможно, у меня было неправильное имя пространства имен/переменной. Где я могу найти все системные переменные?

Изменить - я пробовал это:

BusLoad = sysGetVariableInt("_Statistics", "CAN1::Busload");

Я также пытался изменить пространство имен, но не уверен, где найти список системных пространств имен.


person SimpleOne    schedule 02.08.2020    source источник
comment
Чтобы проверить, использовали ли вы неправильное пространство имен, было бы очень полезно, если бы вы могли поделиться тем, что вы сделали. Пожалуйста, покажите свой код.   -  person M. Spiller    schedule 02.08.2020


Ответы (1)


Доступ к статистике через системные переменные был введен в CANalyzer/CANoe версии 8.0.

Поскольку вы используете версию 7.0, попробуйте следующее:

BusLoad = canGetBusLoad(1);

Начиная с версии 7.1 вы должны использовать:

BusLoad = CAN1.BusLoad;

Начиная с версии 8.0 вы можете использовать системные переменные, как в своем первоначальном вопросе.

Чтобы ответить на второй вопрос, вы можете получить список всех системных переменных в Symbol Explorer.

person M. Spiller    schedule 03.08.2020
comment
Спасибо... Я получаю ошибку синтаксического анализа при попытке CAN1.BusLoad. Кроме того, в моем браузере CAPL нет обозревателя символов. - person SimpleOne; 03.08.2020
comment
Я не знаю сейчас, когда появился обозреватель символов. Возможно, это было после версии 7.0. Что именно говорит ошибка синтаксического анализа? - person M. Spiller; 03.08.2020
comment
Он просто говорит «ошибка синтаксического анализа» и выделяет «.». в 1_ - person SimpleOne; 03.08.2020
comment
Я только что проверил документацию CAN1.BusLoad, она появилась только в версии 7.1, извините за это. Вы должны использовать canGetBusLoad(1). Я отредактировал ответ. - person M. Spiller; 03.08.2020
comment
Извините, пишет, что это неизвестная функция - person SimpleOne; 03.08.2020
comment
Затем, в крайнем случае, вы должны открыть документацию CANalyzer 7.0 и выполнить поиск BusLoad. У меня под рукой только документация версии 10.x и там написано, что canGetBusLoad должна работать в 7.0 - person M. Spiller; 03.08.2020
comment
Поиск BusLoad упоминает только функции, связанные с MOST, поэтому кажется, что они недоступны в моей версии. Есть ли другой способ узнать, спит ли BUS (больше нет сообщений)? - person SimpleOne; 03.08.2020
comment
Единственным другим вариантом было бы, что вы делаете полную статистику самостоятельно. т.е. подсчитайте сообщения за раз и тем самым рассчитайте загрузку шины. canGetBusLoad нельзя найти в документации? - person M. Spiller; 04.08.2020
comment
Спасибо... Думаю, тогда мне, возможно, придется написать свою собственную функцию. Нет, canGetBusLoad нет в документах - person SimpleOne; 05.08.2020