В этом примере показано, как составить пользовательскую таблицу на диалоговом окне маски. Эта модель имеет блок 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');