[已解决] simulink模型生成代码后,外部程序如何通过代码控制模型的开始,中断和停止?

[复制链接]
grayptr 发表于 2022-4-19 17:05:30
本帖最后由 grayptr 于 2022-4-19 17:14 编辑

如题,通过simulink模型生成C++代码,外部C++程序可以通过代码接口实现控制模型的开始,中断和停止吗?

最佳答案


TCCMATLAB 发表于 2022-4-20 13:14:33
grayptr 发表于 2022-4-20 11:15
如果生成C程序,一个步长没运行结束就需要停止程序,此时外部C程序能控制停止吗? ...

debug打断点的时候可以。
生成了代码之后,就和你正常的代码一样了。程序不会区分哪些是你写的,哪些是生成的。
你平常自己写代码,怎么控制程序停止,就怎么对生成生成的代码施加同样的操作就好了。
如果说,不能修改生成的代码,或者不能拆分生成的代码,必须是一个整体来运行,据我所知,没有。

6 条回复


TCCMATLAB 发表于 2022-4-20 09:25:53
肯定是可以的。
simulink模型生成的C++代码, 理论上来说,一个模型会产生一个或者若干个函数。
你把.cpp文件导入到外部项目里面,声明下这些函数,就可以直接调用了。
我理解也就实现了你所说的,控制模型的开始,中断 和 停止。

grayptr 发表于 2022-4-20 10:24:09
TCCMATLAB 发表于 2022-4-20 09:25
肯定是可以的。
simulink模型生成的C++代码, 理论上来说,一个模型会产生一个或者若干个函数。
你把.cpp文 ...

simulink模型生成C++代码后,对外暴露的接口只有initialize(),step(),setExternalInputs(),getExternalInputs(),以及构造和析构函数了,没有能控制开始,停止等的函数可以使用,是在生成代码前进行模型配置的时候需要特殊配置什么吗?

TCCMATLAB 发表于 2022-4-20 10:55:51
grayptr 发表于 2022-4-20 10:24
simulink模型生成C++代码后,对外暴露的接口只有initialize(),step(),setExternalInputs(),getExterna ...

哦,那有可能C++生成的不一样。我一般使用生成c。
有step函数也可以,因为本质上,step函数代表每个步长。
你在其它函数里面,调用step函数,就是跑模型一个步长,或者一个周期。

grayptr 发表于 2022-4-20 11:15:19
TCCMATLAB 发表于 2022-4-20 10:55
哦,那有可能C++生成的不一样。我一般使用生成c。
有step函数也可以,因为本质上,step函数代表每个步长 ...

如果生成C程序,一个步长没运行结束就需要停止程序,此时外部C程序能控制停止吗?

TCCMATLAB 发表于 2022-4-20 13:14:33
grayptr 发表于 2022-4-20 11:15
如果生成C程序,一个步长没运行结束就需要停止程序,此时外部C程序能控制停止吗? ...

debug打断点的时候可以。
生成了代码之后,就和你正常的代码一样了。程序不会区分哪些是你写的,哪些是生成的。
你平常自己写代码,怎么控制程序停止,就怎么对生成生成的代码施加同样的操作就好了。
如果说,不能修改生成的代码,或者不能拆分生成的代码,必须是一个整体来运行,据我所知,没有。
回复此楼

grayptr 发表于 2022-4-20 13:20:22
TCCMATLAB 发表于 2022-4-20 13:14
debug打断点的时候可以。
生成了代码之后,就和你正常的代码一样了。程序不会区分哪些是你写的,哪些是生 ...

好的,了解了,我再想想有没有其他办法做到,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表