В этом примере показано, как использовать Функциональный блок C, чтобы вызвать наследие C функции, которые реализуют n-мерный поиск по таблице.
В этом примере наследие C функции заданы в lookupTable.h и реализованы в directLookupTableND.c. Определения типа, используемые в этом примере, могут быть найдены в your_types.h.
В модели заголовочный файл и исходный файл заданы в Параметрах конфигурации Модели> Цель Симуляции. Теперь функция C может быть вызвана в Функциональном блоке C. Прототип функции, названной в этом примере:
FLT directLookupTableND(const FLT *tableND, const UINT32 nbDims, const UINT32 *tableDims, const UINT32 *tableIdx)
где FLT
определение типа типу с плавающей точкой и UINT32
определение типа 32-битному целому числу без знака.
Этот пример задает две макро-функции, которые используют функциональный directLookupTableND
, которые называются с помощью Функциональных блоков C. Они:
DirectLookupTable3D
- 3D интерполяционная таблица
DirectLookupTable4D
- 4D интерполяционная таблица
Обе этих функции берут следующие входные параметры:
const FLT *tableND
Таблица
const UINT32 *tableDims
- Размер таблицы
const UINT32 *tableIdx
- Табличный индекс
где tableND
и tableDims
сопоставлены с параметрами Функционального блока C и tableIdx
вход с блоком. Значением, возвращенным наследием C функция, является выход блока.
model = 'slexCFunctionLookupTable'; open_system(model); evalc('sim(model)'); slcc('clearCustomCodeModules');