Compare commits
17 Commits
release
...
da78efc988
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
da78efc988 | ||
|
|
9b8b5ec533 | ||
|
|
ac2fe4d653 | ||
|
|
5648875cd2 | ||
|
|
e77a659710 | ||
|
|
abdf0f1e50 | ||
|
|
4c78383edf | ||
|
|
9d5cd30bb8 | ||
|
|
5a92e0bec0 | ||
|
|
982d29560f | ||
|
|
02379d4c46 | ||
|
|
0145ec818e | ||
|
|
7c2fb99908 | ||
|
|
058d3a00cf | ||
|
|
edb22966ff | ||
|
|
245592a821 | ||
|
|
0a2fd71422 |
Binary file not shown.
@@ -253,38 +253,6 @@ 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
|
||||
% Параметры с значениями
|
||||
@@ -293,28 +261,27 @@ function definesWrapperArg = addDefineByParam(definesWrapperArg, paramName, val_
|
||||
val = evalin('base', val); % Вычисление выражений
|
||||
val = num2str(val);
|
||||
end
|
||||
newDefine = createDefine(def_name, val, true);
|
||||
|
||||
newDefine = ['-D"' def_name '__EQ__' val '"'];
|
||||
elseif ~strcmp(param.Type, 'popup')
|
||||
% Чекбоксы
|
||||
if mcuMask.read_checkbox(paramName)
|
||||
newDefine = createDefine(def_name, '', false);
|
||||
newDefine = ['-D"' def_name '"'];
|
||||
else
|
||||
newDefine = '';
|
||||
end
|
||||
else
|
||||
% Выпадающие списки
|
||||
if strcmp(param.Alias, '')
|
||||
newDefine = createDefine(def_name, '', false);
|
||||
newDefine = ['-D"' def_name '"'];
|
||||
else
|
||||
newDefine = createDefine(def_name, val, true);
|
||||
newDefine = ['-D"' def_name '__EQ__' val '"'];
|
||||
end
|
||||
end
|
||||
|
||||
% Добавление дефайна к результирующей строке
|
||||
if isempty(definesWrapperArg) || strlength(strtrim(definesWrapperArg)) == 0
|
||||
definesWrapperArg = newDefine;
|
||||
elseif ~isempty(newDefine)
|
||||
else
|
||||
definesWrapperArg = definesWrapperArg + " " + newDefine;
|
||||
end
|
||||
end
|
||||
|
||||
@@ -73,10 +73,11 @@ classdef periphConfig
|
||||
|
||||
% Восстанавливаем таблицы после изменений
|
||||
customtable.restore_all_tables(tableNames, columns_backup);
|
||||
catch ME
|
||||
catch
|
||||
% В случае ошибки восстанавливаем таблицы
|
||||
customtable.restore_all_tables(tableNames, columns_backup);
|
||||
end
|
||||
|
||||
periphConfig.addUserFunctions(config.UserCode);
|
||||
end
|
||||
|
||||
@@ -542,7 +543,7 @@ classdef periphConfig
|
||||
code = editCode.insertSection(code, '// PERIPH DEINIT', deinitFuncsText);
|
||||
|
||||
% Записываем обновленный файл
|
||||
fid = fopen(wrapPath, 'w', 'n');
|
||||
fid = fopen(wrapPath, 'w', 'n', 'UTF-8');
|
||||
if fid == -1
|
||||
error('Не удалось открыть файл для записи');
|
||||
end
|
||||
@@ -666,23 +667,9 @@ 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;
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<param.summary>Library for run MCU program in Simulink</param.summary>
|
||||
<param.description />
|
||||
<param.screenshot />
|
||||
<param.version>1.05</param.version>
|
||||
<param.version>1.04</param.version>
|
||||
<param.output>${PROJECT_ROOT}\MCU Wrapper.mltbx</param.output>
|
||||
<param.products.name />
|
||||
<param.products.id />
|
||||
@@ -100,14 +100,12 @@
|
||||
</build-deliverables>
|
||||
<workflow />
|
||||
<matlab>
|
||||
<root>C:\Program Files\MATLAB\R2023a</root>
|
||||
<root>C:\Program Files\MATLAB\R2021b</root>
|
||||
<toolboxes>
|
||||
<toolbox name="matlabcoder" />
|
||||
<toolbox name="embeddedcoder" />
|
||||
<toolbox name="gpucoder" />
|
||||
<toolbox name="fixedpoint" />
|
||||
<toolbox name="matlabhdlcoder" />
|
||||
<toolbox name="neuralnetwork" />
|
||||
</toolboxes>
|
||||
<toolbox>
|
||||
<matlabcoder>
|
||||
@@ -129,16 +127,6 @@
|
||||
<enabled>true</enabled>
|
||||
</fixedpoint>
|
||||
</toolbox>
|
||||
<toolbox>
|
||||
<matlabhdlcoder>
|
||||
<enabled>true</enabled>
|
||||
</matlabhdlcoder>
|
||||
</toolbox>
|
||||
<toolbox>
|
||||
<neuralnetwork>
|
||||
<enabled>true</enabled>
|
||||
</neuralnetwork>
|
||||
</toolbox>
|
||||
</matlab>
|
||||
<platform>
|
||||
<unix>false</unix>
|
||||
|
||||
Reference in New Issue
Block a user