【问题标题】:How to inline a Level-2 .m S-functions in MATLAB with Embedded Coder如何使用 Embedded Coder 在 MATLAB 中内联 Level-2 .m S-Function
【发布时间】:2013-09-27 19:59:47
【问题描述】:

我正在尝试将现有的已编译 C 库(Windows x64 上的 .dll)与 Simulink 一起使用。我已经编写了一个基本库以及必要的 2 级 S-Function(.m 文件)和代码生成翻译文件(.tlc)。我的代码在模拟中运行良好,并且代码生成执行没有错误,尽管我在 .tlc 文件中指定的自定义代码都没有最终出现在输出中。但是,如果我的任何 .tlc 文件中存在语法错误,代码生成就会失败,因此它至少会解析文件。参考代码生成的示例代码并没有发现我似乎遗漏的任何内容。

考虑到这里的文件数量和代码量,我将所有内容都放在a Github repository 中。如果您在运行 x64 MATLAB 2011b 或更高版本的 Windows 上,您应该能够立即运行所有内容。 TestLibTest_grt_rtw/TestLibTest.c:TestLibTest_output() 中的最终输出应包含对 TestLibGet() 的两次调用,由 TestLibGet.tlc 指定。

【问题讨论】:

  • TestLibGet.tlc 中有对 Get() 函数的调用。 TestLibGet() 的调用在哪里?
  • TestLib.h 中公开的 3 个函数是 Get()Set()Incr(),这就是为什么 Get()TestLibGet.tlc 中使用的原因。 TestLibGetLevel-2 MATLAB S-Function 块在TestLibTest.mdl 中调用。
  • 您可以在生成的代码中获得 tlc 文件中的内容。为什么您期望在生成的代码中出现 TestLibGet()?

标签: c matlab embedded matlab-coder


【解决方案1】:

我认为您的意思是“Get()”不是从生成的代码中调用的。您链接的 github 存储库中的 tlc 文件没有正确的行尾。一旦你解决了这个问题,对 Get() 的调用就会出现在生成的代码中。解决此问题可能特定于平台。如果您在平台中的简单代码编辑器中打开 tlc 文件,您应该能够在正确的位置看到新行。如果您看到像 ^M 这样的字符,则需要将其替换为新行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    相关资源
    最近更新 更多