17 Commits

Author SHA1 Message Date
Razvalyaev
da78efc988 Доработка periphConfig
Фикс обновления имени S-Function
2025-11-14 21:59:27 +03:00
Razvalyaev
9b8b5ec533 Все изменения накопившиеся с релиза 2025-11-14 21:56:39 +03:00
Razvalyaev
ac2fe4d653 pre-release 1.02? 2025-06-19 13:25:21 +03:00
Razvalyaev
5648875cd2 добавлен экспорт и импорт настроек оболочки и приложения МК
работа с конфигом (чтение запись) перенесена в отдельный файл

добавлена возможность через popup сделать define = чему-то
2025-06-17 18:34:23 +03:00
razvalyaev
e77a659710 исправлено открыти файлов app wrapper
исправлено формирвоание строки для записи source и includes
2025-06-16 16:48:07 +03:00
Razvalyaev
abdf0f1e50 установщик 2025-06-16 08:21:39 +03:00
Razvalyaev
4c78383edf чуть структурированго но надо еще
перенести работу с конфигом в отдельную папку и реализовать конфиг для всего симулятора. Чтобы можно было легко переносить настройки оболочки
2025-06-16 00:28:13 +03:00
Razvalyaev
9d5cd30bb8 исправлено авторазмещение 2025-06-15 23:59:06 +03:00
Razvalyaev
5a92e0bec0 сделано подключение сурсов по конфигу, но надо бы как-то структуризировать 2025-06-15 23:39:34 +03:00
Razvalyaev
982d29560f надо сделать подключение сурсов по чекбоксам
пока ничего не работает
2025-06-15 16:48:59 +03:00
Razvalyaev
02379d4c46 обновлен шаблон run_bat и симуликн модель 2025-06-15 16:05:30 +03:00
Razvalyaev
0145ec818e добавлено авторазмещение параметров по колву элементов в строке
сделана инициализация таблицы по необходимости (деинициализированные колонки)
2025-06-15 15:52:44 +03:00
Razvalyaev
7c2fb99908 добавлена поддержка popup в конфиге
добавлена задание src в run_bat.mex по чекбоксу
исправлены лишние абзацы в disp
2025-06-15 15:18:11 +03:00
Razvalyaev
058d3a00cf добавелно включение вкладок по конфигу 2025-06-15 12:52:53 +03:00
Razvalyaev
edb22966ff структуризировано:
выделены отдельный файл для работы с wrapper и appwrapper
2025-06-15 10:55:05 +03:00
Razvalyaev
245592a821 minor
переименованы функции для app wrapper
2025-06-15 10:33:32 +03:00
Razvalyaev
0a2fd71422 - сделан выбор папки с MCU Wrapper
- добавлен файл для работы с путями
- добавлен файл для работы с компилятором (не доделан)
2025-06-15 10:25:24 +03:00
4 changed files with 10 additions and 68 deletions

Binary file not shown.

View File

@@ -253,38 +253,6 @@ function definesWrapperArg = addDefineByParam(definesWrapperArg, paramName, val_
return; return;
end 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 if val_define ~= 0
% Параметры с значениями % Параметры с значениями
@@ -293,28 +261,27 @@ function definesWrapperArg = addDefineByParam(definesWrapperArg, paramName, val_
val = evalin('base', val); % Вычисление выражений val = evalin('base', val); % Вычисление выражений
val = num2str(val); val = num2str(val);
end end
newDefine = createDefine(def_name, val, true); newDefine = ['-D"' def_name '__EQ__' val '"'];
elseif ~strcmp(param.Type, 'popup') elseif ~strcmp(param.Type, 'popup')
% Чекбоксы % Чекбоксы
if mcuMask.read_checkbox(paramName) if mcuMask.read_checkbox(paramName)
newDefine = createDefine(def_name, '', false); newDefine = ['-D"' def_name '"'];
else else
newDefine = ''; newDefine = '';
end end
else else
% Выпадающие списки % Выпадающие списки
if strcmp(param.Alias, '') if strcmp(param.Alias, '')
newDefine = createDefine(def_name, '', false); newDefine = ['-D"' def_name '"'];
else else
newDefine = createDefine(def_name, val, true); newDefine = ['-D"' def_name '__EQ__' val '"'];
end end
end end
% Добавление дефайна к результирующей строке % Добавление дефайна к результирующей строке
if isempty(definesWrapperArg) || strlength(strtrim(definesWrapperArg)) == 0 if isempty(definesWrapperArg) || strlength(strtrim(definesWrapperArg)) == 0
definesWrapperArg = newDefine; definesWrapperArg = newDefine;
elseif ~isempty(newDefine) else
definesWrapperArg = definesWrapperArg + " " + newDefine; definesWrapperArg = definesWrapperArg + " " + newDefine;
end end
end end

View File

@@ -73,10 +73,11 @@ classdef periphConfig
% Восстанавливаем таблицы после изменений % Восстанавливаем таблицы после изменений
customtable.restore_all_tables(tableNames, columns_backup); customtable.restore_all_tables(tableNames, columns_backup);
catch ME catch
% В случае ошибки восстанавливаем таблицы % В случае ошибки восстанавливаем таблицы
customtable.restore_all_tables(tableNames, columns_backup); customtable.restore_all_tables(tableNames, columns_backup);
end end
periphConfig.addUserFunctions(config.UserCode); periphConfig.addUserFunctions(config.UserCode);
end end
@@ -542,7 +543,7 @@ classdef periphConfig
code = editCode.insertSection(code, '// PERIPH DEINIT', deinitFuncsText); code = editCode.insertSection(code, '// PERIPH DEINIT', deinitFuncsText);
% Записываем обновленный файл % Записываем обновленный файл
fid = fopen(wrapPath, 'w', 'n'); fid = fopen(wrapPath, 'w', 'n', 'UTF-8');
if fid == -1 if fid == -1
error('Не удалось открыть файл для записи'); error('Не удалось открыть файл для записи');
end end
@@ -666,23 +667,9 @@ classdef periphConfig
param.TypeOptions = def.Options; param.TypeOptions = def.Options;
end end
else 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; param.Alias = def.Def;
end end
end end
end
callback = sprintf('try periphConfig.periphParamCallback("%s"); catch end', paramName); callback = sprintf('try periphConfig.periphParamCallback("%s"); catch end', paramName);
param.Callback = callback; param.Callback = callback;

View File

@@ -7,7 +7,7 @@
<param.summary>Library for run MCU program in Simulink</param.summary> <param.summary>Library for run MCU program in Simulink</param.summary>
<param.description /> <param.description />
<param.screenshot /> <param.screenshot />
<param.version>1.05</param.version> <param.version>1.04</param.version>
<param.output>${PROJECT_ROOT}\MCU Wrapper.mltbx</param.output> <param.output>${PROJECT_ROOT}\MCU Wrapper.mltbx</param.output>
<param.products.name /> <param.products.name />
<param.products.id /> <param.products.id />
@@ -100,14 +100,12 @@
</build-deliverables> </build-deliverables>
<workflow /> <workflow />
<matlab> <matlab>
<root>C:\Program Files\MATLAB\R2023a</root> <root>C:\Program Files\MATLAB\R2021b</root>
<toolboxes> <toolboxes>
<toolbox name="matlabcoder" /> <toolbox name="matlabcoder" />
<toolbox name="embeddedcoder" /> <toolbox name="embeddedcoder" />
<toolbox name="gpucoder" /> <toolbox name="gpucoder" />
<toolbox name="fixedpoint" /> <toolbox name="fixedpoint" />
<toolbox name="matlabhdlcoder" />
<toolbox name="neuralnetwork" />
</toolboxes> </toolboxes>
<toolbox> <toolbox>
<matlabcoder> <matlabcoder>
@@ -129,16 +127,6 @@
<enabled>true</enabled> <enabled>true</enabled>
</fixedpoint> </fixedpoint>
</toolbox> </toolbox>
<toolbox>
<matlabhdlcoder>
<enabled>true</enabled>
</matlabhdlcoder>
</toolbox>
<toolbox>
<neuralnetwork>
<enabled>true</enabled>
</neuralnetwork>
</toolbox>
</matlab> </matlab>
<platform> <platform>
<unix>false</unix> <unix>false</unix>