【发布时间】:2013-06-25 00:01:52
【问题描述】:
我在 Visual Studio 和 Eclipse 中有一个非常大的 C/C++ 软件项目。有一些以 SIMULINK 模型形式存在的第三方软件。目前是否可以:
1) 为 SIMULINK 模型编写 C/C++ 包装函数? 2) 从外部环境(如 VS 或 Eclipse C/C++ 项目)中调用函数来执行集成和进一步的任务?
我知道您可以使用 MEX (MATLAB Exec.) 函数,这些函数是为 MATLAB 使用而封装的 C/C++ 或 FORTRAN。但这对我来说并不理想。
用例
我的用例基于建模和仿真,但我的子系统在数据格式方面非常多样化。 50% 在 C/C++ 中,35% 在 SIMULINK 模型中,其余的在二进制可执行文件、目标代码、符号数据等中。我正在做一些复杂的系统建模;抱歉,由于保护原因,无法进一步告诉您。
从我得到的答案看来,人们似乎热衷于使用 Mathworks 提供的功能。我的意图是得到更像是一个否定的答案,但到目前为止我也得到了很好的解释。
更新
我将不得不评估 SIMULINK 的嵌入式编码器,看看需要多少额外的努力来完善生成的代码。我读到 Embedded Coder 中有生产级代码生成工具;应该很有趣。
【问题讨论】:
-
看来你不想使用任何主流方法来访问simulink生成的代码。你想做什么?
-
@macduff 仅仅因为有代码生成器并不意味着我必须使用它。我试图找出是否可以使用 C/C++ 包装器来调用 SIMULINK 模型。而我想做的是创建一个复杂的系统,其中子系统设计在 SIMULINK 模型、C/C++ 源代码、可执行应用程序、目标文件、二进制数据等中。如果你想要具体细节,抱歉我不能透露保密。
-
您可以调用 Matlab 并使用 TCP/IP 或其他 IPC 进行协同仿真,以便在协同仿真期间与模型进行通信。但是,如果生成的 c 代码效率不够高,也可能缺少这种方法。
-
@macduff 很高兴您能理解!我很确定 MATLAB 的代码生成器不够好。 SIMULINK 的一个 - 我不确定,目前正在尝试中。我很想试试你所说的关于 TCP 通信的内容。那么,我应该“伪造”远程执行我的 .m 脚本吗?
-
虽然这是可能的,但需要付出合理的努力。如果可能,请使用 Simulink 生成的代码。
标签: c++ matlab user-interface wrapper simulink