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