Создайте диалоговое окно Custom Table on Mask

В этом примере показано, как составить пользовательскую таблицу на диалоговом окне маски. Эта модель имеет блок Subsystem с маской на нем. Маска имеет коллбэк, чтобы изменить таблицу, на основе содержимого на значениях, введенных в ячейках. Коллбэк прибывает из внешнего вспомогательного файла. Чтобы составить эту таблицу, добавьте маску на блоке или отредактируйте существующую маску и следуйте инструкциям:

Добавьте Пользовательский Табличный параметр и сконфигурируйте параметр

Чтобы добавить Пользовательский Табличный параметр, перейдите к вкладке Parameters и Dialog и нажмите Custom Table. Если параметр добавляется, добавленные стоимости в разделе Редактора свойств. В поле Value добавьте:

{ 'sig1', 'Input', 'Inherit', 'Inherit', 'Signed', 'Inherit'; 'sig2', 'Input', 'Inherit', 'Inherit', 'Signed', 'Inherit'; 'sig3', 'Output', '10', 'Inherit', 'Signed', 'Inherit'; 'sig4', 'Output', '10', 'Inherit', 'Signed', 'Inherit' }.

В поле Columns кликните по Значку редактирования и добавьте имя столбцов. Имена столбцов, используемые в этом примере: Имя HDL, Режим ввода-вывода, Шаг расчета, Тип данных, Знак и Дробная Длина.

В разделе Dialog отредактируйте поле Callback, чтобы добавить ваш коллбэк. Коллбэком, используемым в этом примере, является от внешнего файла с именем CustomTableCallback. Введите имя файла в поле коллбэка. Этот коллбэк задает, как изменить значения в ячейке на основе значения от других ячеек и столбцов.

Добавьте кнопки и опции, чтобы управлять пользовательской таблицей

Здесь, четыре кнопки добавляются, чтобы добавить новую строку, удалить выбранную строку и переместить строку вверх или вниз. Чтобы добавить кнопки, кликните по параметру Кнопки, перечисленному под разделом Action. Назовите кнопки как Новые, Удалите, и Вниз. Чтобы сконфигурировать кнопки, отредактируйте поле Callback в Редакторе свойств и добавьте соответствующие коллбэки. Коллбэк, используемый в каждой кнопке:

Новый

maskObj = Simulink.Mask.get(gcb);
tableControl = maskObj.getDialogControl( 'CustomTable' );
hdlName =  'sig';
rowIndex = tableControl.getNumberOfRows();
hdlName = strcat( 'sig', num2str( rowIndex + 1 ) );
tableControl.addRow( hdlName, 'Input', 'Inherit', 'Inherit', 'Signed', 'Inherit' )

Удаление

maskObj = Simulink.Mask.get(gcb);
tableControl = maskObj.getDialogControl( 'CustomTable' );
rowIndex = tableControl.getSelectedRows();
hdlName =  'sig';
if ( ~isempty(rowIndex) )
    tableControl.removeRow( rowIndex(1) );
end

maskObj = Simulink.Mask.get(gcb);
tableControl = maskObj.getDialogControl( 'CustomTable' );
rowIndex = tableControl.getSelectedRows();
if ( ~isempty(rowIndex) )
    tableControl.swapRows( rowIndex(1)-1, rowIndex(1) );
end

Вниз

maskObj = Simulink.Mask.get(gcb);
tableControl = maskObj.getDialogControl( 'CustomTable' );
rowIndex = tableControl.getSelectedRows();
if ( ~isempty(rowIndex) )
    tableControl.swapRows( rowIndex(1)+1, rowIndex(1) );
end

В дополнение к этим кнопкам таблица также имеет флажок, чтобы Позволить Прямому Сквозному соединению и кнопке Autofill автоматически создать интерфейс сигнала из заданного экземпляра компонента HDL. Чтобы добавить эти опции, добавьте Флажок и кнопочное управление и добавьте соответствующие настройки.

После добавления всех значений нажмите ОК, чтобы сохранить изменения. Можно предварительно просмотреть таблицу с помощью кнопки Preview. Это - предварительный просмотр итоговой таблицы, составленной в этом примере:

open_system('CustomTableExample');

Для просмотра документации необходимо авторизоваться на сайте