指针Simulink的万博1manbetx功能

14次(最近30天)
卡洛斯·马
卡洛斯·马 21 2020年2月
编辑: 卡洛斯·马在2020年2月24日
假设我有一个接受一个函数指针作为参数自定义的C函数,
浮动cFunc(浮缬氨酸,浮子(* ptrFunc)(浮动)){
返回ptrFunc(VAL);
}
和内Simulink中万博1manbetx,我所定义的功能的Simulink称为“slxFunc”,需要一个浮子作为输入,并输出一个浮子。
如何获得指针slxFunc,这样我可以使用C-呼叫者块将其提供给cFunc?
非常感谢,谢谢。
/ *编辑1:额外的信息* /
下面的C代码是什么,我试图效仿,
包括
/ * times2应在Simulink *被定义万博1manbetx/
浮动times2(浮动VAL){
返回(2.0 * VAL);
}
/ * times3应也可以在Simulink *定义/万博1manbetx
浮动times3(浮动VAL){
返回(3.0 * VAL);
}
/ * myFunc的是在.c文件定义* /
浮动myFunc的(浮缬氨酸,浮子(* slxFunc)(浮动)){
返回(slxFunc(VAL));
}
INT主要()
{
/ * printf的应打印4.0 6.0 * /
的printf(“%F \吨%F \ n” 个,myFunc的(2.0,times2),myFunc的(2.0,times3));
返回0;
}
,其中
times2
times3
被以在Simulink环境来定义,并万博1manbetx
myFunc的
被实现为自定义C函数。

2条评论

stozaki
stozaki 在2020年2月23日
你可以用Stateflow的?
卡洛斯·马
卡洛斯·马 在2020年2月24日
感谢回答@stozaki。
我真的很想得到它Stateflow的工作压力太大,但是它返回一个未解决的数据错误。
有没有一种办法可以纠正吗?

登入评论。

答案(1)

stozaki
stozaki 在2020年2月24日
我attahced例如模型,hedder和烃源C文件。
请尝试模拟在那里。

3条评论

卡洛斯·马
卡洛斯·马 在2020年2月24日
也许我们有一个误区这里,您的示例运行正常,但它并没有描述什么,我想实现。我传递指针变量没有问题,但我有同一个指针传递给里面的Simulink功能的问题。万博1manbetx
下面的C代码是什么,我试图效仿,
包括
/ * times2应在Simulink *被定义万博1manbetx/
浮动times2(浮动VAL){
返回(2.0 * VAL);
}
/ * times3应也可以在Simulink *定义/万博1manbetx
浮动times3(浮动VAL){
返回(3.0 * VAL);
}
/ * myFunc的是在.c文件定义* /
浮动myFunc的(浮缬氨酸,浮子(* slxFunc)(浮动)){
返回(slxFunc(VAL));
}
INT主要()
{
/ * printf的应打印4.0 6.0 * /
的printf(“%F \吨%F \ n” 个,myFunc的(2.0,times2),myFunc的(2.0,times3));
返回0;
}
,其中
times2
times3
被以在Simulink环境来定义,并万博1manbetx
myFunc的
被实现为自定义C函数。
再次感谢。
stozaki
stozaki 在2020年2月24日
通过Simulink中提供的块没有指针万博1manbetx的概念。
您可以使用新增加的模式?
卡洛斯·马
卡洛斯·马 在2020年2月24日
感谢您的帮助,但再一次,这不是我所期待的。我没有问题,无论是打电话用C来电/ Stateflow的C函数。问题的关键在于通过 一个指向Simulink的功能万博1manbetx 到预定义的C函数,如由线描述
的printf(“%F \吨%F \ n” 个,myFunc的(2.0,times2),myFunc的(2.0,times3));
如果您解析这条线在一个通用的C编译器, 的printf 将返回4.0和6.0像预期的那样,我可以通过功能 times2 times3 进入功能 myFunc的 。上述线不编译,但是,在状态流以C被选择作为动作语言,Simulink中预计,争论万博1manbetx times2 times3 但不知道,我想传递函数的函数指针来代替。
再次感谢,如果您有任何想法。

登入评论。

登入回答这个问题。