From 194ca126fb9391074c05e3a7f9f3da474d86e4c8 Mon Sep 17 00:00:00 2001 From: Razvalyaev Date: Wed, 22 Apr 2026 15:58:16 +0300 Subject: [PATCH] release 1.05 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлена поддержка нескольких дефайнов в конфиге Фикс обновления имени S-Function --- MCU Wrapper.mltbx | Bin 94171 -> 95634 bytes McuLib/m/mexing.m | 48 +++++++++++++++++++++++++++++++++------- McuLib/m/periphConfig.m | 17 +++++++++++++- mcuwrapper.prj | 16 ++++++++++++-- 4 files changed, 70 insertions(+), 11 deletions(-) diff --git a/MCU Wrapper.mltbx b/MCU Wrapper.mltbx index 64a60f7cbc1d0d72340ac8628d0dc2684528ae7a..f6b7b82dafdf20c6b54f1f3b4800c658dd0e58f6 100644 GIT binary patch delta 20662 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 TT1MR52)Xi+bXYe~JmUWXjRy|V diff --git a/McuLib/m/mexing.m b/McuLib/m/mexing.m index 4524278..a9395a7 100644 --- a/McuLib/m/mexing.m +++ b/McuLib/m/mexing.m @@ -1,19 +1,18 @@ % Компилирует S-function для блока микроконтроллера в Simulink % compile_mode: 1 - компиляция, 0 - обновление конфигурации function res = mexing(compile_mode) - global Ts - Ts = 0.00001; % Установка глобального времени дискретизации if compile_mode == 1 + block = gcb; % === РЕЖИМ КОМПИЛЯЦИИ === setenv('VSLANG', '1033'); % Английский для Visual Studio % Обновление параметров блока - block = gcb; newName = get_param(block, 'sfuncName'); oldName = get_param(block, 'FunctionName'); if ~strcmp(newName, oldName) set_param(block, 'FunctionName', newName); % Обновление имени функции + mcuMask.setSFuncName(block); end newParam = get_param(block, 'sfuncParam'); @@ -254,6 +253,38 @@ function definesWrapperArg = addDefineByParam(definesWrapperArg, paramName, val_ return; end + % Вспомогательная функция для создания дефайнов + function newDefine = createDefine(def_name, val, isValueDefine) + if contains(def_name, '_MATDELIM_') + % Multiple values через пробел - создаем несколько дефайнов + def_names = strsplit(strtrim(def_name), '_MATDELIM_'); + newDefine = ''; + for i = 1:length(def_names) + single_def = strtrim(def_names{i}); + if ~isempty(single_def) + if isValueDefine + single_define = ['-D"' single_def '__EQ__' val '"']; + else + single_define = ['-D"' single_def '"']; + end + + if i == 1 + newDefine = single_define; + else + newDefine = [newDefine ' ' single_define]; + end + end + end + else + % Single value - создаем один дефайн + if isValueDefine + newDefine = ['-D"' def_name '__EQ__' val '"']; + else + newDefine = ['-D"' def_name '"']; + end + end + end + % Формирование дефайна в зависимости от типа параметра if val_define ~= 0 % Параметры с значениями @@ -262,27 +293,28 @@ function definesWrapperArg = addDefineByParam(definesWrapperArg, paramName, val_ val = evalin('base', val); % Вычисление выражений val = num2str(val); end - newDefine = ['-D"' def_name '__EQ__' val '"']; + newDefine = createDefine(def_name, val, true); + elseif ~strcmp(param.Type, 'popup') % Чекбоксы if mcuMask.read_checkbox(paramName) - newDefine = ['-D"' def_name '"']; + newDefine = createDefine(def_name, '', false); else newDefine = ''; end else % Выпадающие списки if strcmp(param.Alias, '') - newDefine = ['-D"' def_name '"']; + newDefine = createDefine(def_name, '', false); else - newDefine = ['-D"' def_name '__EQ__' val '"']; + newDefine = createDefine(def_name, val, true); end end % Добавление дефайна к результирующей строке if isempty(definesWrapperArg) || strlength(strtrim(definesWrapperArg)) == 0 definesWrapperArg = newDefine; - else + elseif ~isempty(newDefine) definesWrapperArg = definesWrapperArg + " " + newDefine; end end diff --git a/McuLib/m/periphConfig.m b/McuLib/m/periphConfig.m index d89dcf5..bae9d6c 100644 --- a/McuLib/m/periphConfig.m +++ b/McuLib/m/periphConfig.m @@ -73,10 +73,11 @@ classdef periphConfig % Восстанавливаем таблицы после изменений customtable.restore_all_tables(tableNames, columns_backup); - catch + catch ME % В случае ошибки восстанавливаем таблицы customtable.restore_all_tables(tableNames, columns_backup); end + periphConfig.addUserFunctions(config.UserCode); end function update() @@ -665,9 +666,23 @@ classdef periphConfig param.TypeOptions = def.Options; end else + % Если def.Def - массив, записываем все элементы через пробел в Alias + if iscell(def.Def) || (isnumeric(def.Def) && numel(def.Def) > 1) + % Преобразуем массив в строку с элементами через пробел + if iscell(def.Def) + % Для cell-массива + aliasStr = strjoin(cellfun(@num2str, def.Def, 'UniformOutput', false), '_MATDELIM_'); + else + % Для числового массива + aliasStr = strjoin(arrayfun(@num2str, def.Def, 'UniformOutput', false), '_MATDELIM_'); + end + param.Alias = aliasStr; + else + % Одиночное значение param.Alias = def.Def; end end + end callback = sprintf('try periphConfig.periphParamCallback("%s"); catch end', paramName); param.Callback = callback; diff --git a/mcuwrapper.prj b/mcuwrapper.prj index 713f663..4681cec 100644 --- a/mcuwrapper.prj +++ b/mcuwrapper.prj @@ -7,7 +7,7 @@ Library for run MCU program in Simulink - 1.04 + 1.05 ${PROJECT_ROOT}\MCU Wrapper.mltbx @@ -100,12 +100,14 @@ - C:\Program Files\MATLAB\R2021b + C:\Program Files\MATLAB\R2023a + + @@ -127,6 +129,16 @@ true + + + true + + + + + true + + false