我在Matlab 2012a中使用dos函数执行命令:
[status,output] = dos('example.exe','-echo');
在执行期间,该命令在命令窗口中显示一个处理了百分比的字符串,我想使用此信息在GUI中创建waitbar
,但我不能在“期间使用它” “执行。有没有其他方法可以实时获取命令窗口内容?如果没有,我还能做些什么来为我的命令制作一个等待吧?
感谢您的帮助
答案 0 :(得分:3)
您无法使用MATLAB的dos
(或相关的system
和unix
),因为它们(正如您已经注意到的)是同步的,只有在应用程序返回时才会返回已经结束了。
您需要的是异步运行外部程序和waitbar
代码。这不能在纯MATLAB代码中完成,但可以使用Java(可直接在MATLAB中使用):
用Java编写一个运行程序的类,并异步收集输出。有关详细信息,请参阅this answer on SO。
在读取新输出数据时,让Java类调用MATLAB回调。然后,MATLAB回调可以更新等待条。有关详细信息,请参阅this post on undocumentedmatlab.com。