coder.ceval (printf, ....)不即时打印一条消息

5视图(30天)
这就跟你问声好!我需要打印一个消息期间每隔几个迭代模拟控制仿真的当前状态。由于m文件指定为c代码生成使用 codegen ,我用 coder.ceval (printf,…) 方法。当我检查编译c代码使用 .mex 函数,是印刷在模拟所有的消息。相反,所有消息都模拟完成后打印一次。我怎么能强迫 codegen 打印一条消息instanteneously吗?做任何事相似 drawnow 存在 coder.ceval (printf, . .) 吗?任何人的帮助感激!

接受的答案

弗里德里希
弗里德里希 2012年8月17日
编辑:弗里德里希 2012年8月17日
你好,
只要你可以留在墨西哥人
mexEvalString (“drawnow”);
所以一个
coder.ceval (“mexEvalString”,“drawnow””)
这将给MATLAB线程足够的时间和显示数据刷新缓冲区。
如果你想生成代码不是墨西哥人只可以使用编码器。目标代码生成过程中区分这些情况:
如果比较字符串(墨西哥人的coder.target)
coder.ceval (“mexEvalString”,“drawnow””)
结束
1评论
托马斯Jurena
托马斯Jurena 2012年8月20日
谢谢你的回答,但不幸的是这并没有帮助。这是我的代码:
matlab_run = isempty (coder.target);
mex_run = strcmp (墨西哥人的,coder.target);
。。
。。
。。
如果matlab_run
流(的一些消息);
其他的
coder.ceval (“printf“,C_formatted_message);
如果mex_run
coder.ceval (“mexEvalString”,“drawnow””);
结束
结束
它仍然不打印信息在模拟。代码中有什么问题吗?注意,当生成c代码执行从一个主要功能,即时消息打印到控制台。

登录置评。

答案(1)

托马斯Jurena
托马斯Jurena 2012年8月20日
编辑:托马斯Jurena 2012年8月20日
好吧,我终于想明白了弗里德里希的帮助。编码器的参数。ceval必须是一个c格式字符串,即。
C_command = [“drawnow”char (0)];
coder.ceval (“printf“,C_formatted_message);
coder.ceval (“mexEvalString”,C_command);
1评论
胡安·罗哈斯
胡安·罗哈斯 2013年2月20日
你如何创建C_formatted_message ?
在我的例子中,我使用printf文件流:coder.ceval (s12, printf, fid检测器,s11 int32(我));
支撑材在哪里声明为:支撑材=编码器。不透明(“文件*”、“零”);

登录置评。