4

我在 Matlab 2012a 中使用 dos 函数执行命令:

[status,output] = dos('example.exe','-echo');

在执行期间,该命令在命令窗口中显示一个带有已处理百分比的字符串,我想使用此信息waitbar在 GUI 中创建一个,但我不能在“执行期间”使用它。有没有其他方法可以实时获取命令窗口内容?如果没有,我还能做些什么来为我的命令制作等待栏?

谢谢你的帮助

4

1 回答 1

4

您不能使用 MATLAB dos(或相关的systemand unix)来执行此操作,因为它们(正如您已经注意到的)是同步的,并且仅在应用程序完成后才返回。

您需要的是waitbar异步运行外部程序和您的代码。这不能在纯 MATLAB 代码中完成,但可以使用 Java(可以直接在 MATLAB 中使用)来完成:

  1. 用 Java 编写一个类来运行您的程序并异步收集输出。有关详细信息,请参阅SO 上的此答案

  2. 读取新的输出数据时,让您的 Java 类调用 MATLAB 回调。然后,MATLAB 回调可以更新等待栏。有关更多信息,请参阅undocumentedmatlab.com 上的此帖子。

于 2013-07-05T06:07:29.660 回答