5

我有一个 Simulink 模型,其目的是自动生成代码。

我的模型使用 S 函数(由另一方开发),它对路径有硬编码假设。例如,需要几个外部数据文件,这些文件在 S-Function 中通过相对路径(如..\Bin\data\datafile.bin. 这使得有必要在运行模型之前将 MATLAB 的当前工作目录设置为特定路径。

我可以通过模型回调函数自动检查并设置正确的路径。但是,所有模型回调函数似乎只与仿真过程有关,与构建过程无关。这意味着无论我在哪个目录中,我都可以运行模型,但是当我尝试构建模型时,它总是会失败,除非我手动将 MATLAB 导航回正确的目录。

不用说,这很烦人。所以我想知道是否有类似“preBuildFcn”回调函数的东西,一个在开始构建过程之前运行的函数?任何其他解决方案(不涉及修改 S-Function)也非常受欢迎。

4

2 回答 2

4

Simulink / Embedded Coder 的构建过程中有很多钩子('entry'、'before_tlc'、'after_tlc'、'before_make'、'after_make'、'exit' 和 'error')。我假设您想要一个“入口”挂钩。

您需要做的就是编写一个名为your_system_target_file name _make_rtw_hook 的 M 函数,如使用 STF_make_rtw_hook 文件自定义构建过程文档中所述。

如果您无法打开在线文档(需要登录),以下是 MATLAB 安装中 HTML 的路径:MATLAB root \help\rtw\ug\customizing-the-target-build-process-with-the- stf-make-rtw-hook-file.html

于 2014-09-09T12:33:16.227 回答
1

我不确定构建 simulink 模型是否与构建常规 MATLAB 程序足够相似,但这是我过去使用的:

  1. 手动设置项目
  2. 以编程方式构建项目

用于构建项目的程序应该能够设置路径或执行其他自定义操作。

于 2014-09-09T11:22:48.180 回答