使用matlab数据使用鼠标打开而matlab终端应用程序仍在运行

8视图(30天)
所以我有一个可部署终端应用程序,它是一个实用程序发送给我的同事。
它基于菜单的导航系统,允许用户做某些情况。其中的一个情况是生成一些基本的情节。
的菜单系统继续被称为内部infinte while循环,直到用户选择退出。
我的问题是这样的。
因为程序正在运行,用户使用一个菜单选项后做一些情节,现在存在于工作目录,用户可以不打开情节,因为喜欢它应该运行的程序实际上仍然是积极,除非用户选择退出。它坐在那里等待下一个用户想要做的事情。
我需要找到一个办法让用户看情节在工作direcotry(打开),而程序仍在运行。
“暂停”应该能够做到这一点,但它不能。的情节仍打不开而暂停被称为。
使用“键盘”功能做实际工作。如果我把一个“键盘”,程序等。用户可以打开情节等。
然而,从键盘函数返回的唯一方法是手动输入DBCONT终端。这是不能接受的用户应用程序。
我想做什么,会弹出一个消息,说在后台“按任意键继续”键盘函数被调用,这样他们就可以开放的情节。
现在的问题是。我怎么programattically叫DBCONT当用户按任意键后称为键盘函数?
我还没有找到一种方法或另一个。对不起,我限制发布代码。一个例子可以由怨打字暂停命令在matlab终端并试图打开一个图。它不会让你。然后用键盘试试,你会发现你可以打开一个图。
但是如何回到主循环的问题。
谢谢

答案(4)

布鲁诺陈德良”class=
布鲁诺陈德良 2023年2月28日
编辑:布鲁诺陈德良 2023年2月28日
这是一个调用的方法 dbcont 退出调试模式而不需要用户输入 这FEX
键盘
等到用户做他/她的东西
inputemu (“key_normal”,“dbcont \输入”);%文件交换

1月”class=
1月 2023年2月27日
编辑:1月 2023年2月27日
“做一些情节”到底是什么意思?.fig-files吗?png和光栅图的副本吗?是什么原因,他们不能是“打开”,这软件你想开放吗?为什么跑步计划防止被打开的“阴谋”?
使用 键盘 停止执行可能会工作,但听起来像一个可怜的设计。记住,用户打开调试控制台,输入可以有奇怪的副作用。
我怎么programattically叫DBCONT当用户按任意键后称为键盘函数? ”——我的答案是一样的 其他讨论 今天我们有:最好的解决方案是避免需要这样做。在你的情况中显式创建的解决方案可能是让数据保持开放(如果这是指“做一些情节”)。为什么之前的“阴谋”关闭?
另一个选择是避免与文本菜单、终端应用程序运行在一个循环,直到用户选择“退出”。这听起来像是从1985 ms - dos界面。不是标准的GUI更加用户友好?
顺便问一下:你可以使用 FEX: textinject java.awt.robot 神奇的类型“dbcont”命令窗口。这是ultimative黑客风格和远远超出干净代码。我会避免这样的间接,因为他们让代码的复杂性爆炸,减少平台的独立性。
摘要:重构您的代码使用一个标准的GUI而不是无用的在调试控制台。
7评论
1月”class=
1月 2023年2月28日
@Robert斯科特 :“ 世界上有数百万的控制台应用程序,不需要一个gui。 ”——这是正确的。这些应用程序是“单线程”。这意味着,主要任务控制程序流,不留下一个用户,使用Matlab会话,例如开放数据。这意味着,一个控制台应用程序无法解决您的需求。
现代软件,如操作系统、多线程:你可以把当前的应用程序,并使用另一个进程的其他数据。这可以通过Matlab GUI会话,块执行只有在其回调处理(见“可中断”属性),但是后来你有完全访问Matlab的引擎,在GUI在后台等待下一个用户交互。
我已经试过了几天使用的命令窗口用户交互,struggeled 键盘 dbcont 或棘手的java黑客,浸润命令窗口的输入和输出。现在我相信,没有干净的和稳定的方法。甚至建议 textinject java.awt.robot 只丑陋的黑客(顺便说一下,你单词查找树?)。
一个有经验的程序员需要不到一个小时以编程方式创建GUI和一些菜单元素。AppDesigner甚至过时的指南也可能是有用的。

登录置评。


史蒂文的主”class=
史蒂文的主 2023年2月27日
因为程序正在运行,用户使用一个菜单选项后做一些情节,现在存在于工作目录,用户可以不打开情节,因为喜欢它应该运行的程序实际上仍然是积极,除非用户选择退出。它坐在那里等待下一个用户想要做的事情。
如果有这个应用程序菜单是一个非常困难的要求,无法改变,我认为选择之一是有一个菜单选项,允许用户选择一个文件打开(通过输入图文件在当前目录的名称或使用类似 uigetfile ),那么程序打开文件。
6个评论
1月”class=
1月 2023年2月28日
另一个选择是打开一个Matlab会话试玩版数字2:
! matlab - r”openfig (your.fig)”

登录置评。


1月”class=
1月 2023年3月1日
编辑:1月 2023年3月1日
这花了4分钟写:
函数MainGUI
FigH =图(“名字”,“主GUI”,
菜单条的,“没有”,
“NumberTitle”,“关闭”,
“调整”,“关闭”,
“BusyAction”,“取消”,%计算期间阻止新行动
“DeleteFcn”@Exit_CB,
“CloseRequestFcn”,@Exit_CB);
StartButtonH = uicontrol (FigH“风格”,“按钮”,
“字符串”,“下一个请求”,
“字形大小”,20岁,
“单位”,“归一化”,
“位置”,(0.1,0.55,0.8,0.35),
“回调”,@Start_CB);
ExitButtonH = uicontrol (FigH“风格”,“按钮”,
“字符串”,“退出”,
“字形大小”,20岁,
“单位”,“归一化”,
“位置”,(0.1,0.1,0.8,0.35),
“回调”,@Exit_CB);
结束
函数Start_CB (StartButtonH EventData)
%暂时禁用按钮:
origString =得到(StartButtonH,“字符串”);
集(StartButtonH,“字符串”,“请等待…”,“启用”,“关闭”);
drawnow;
%包含菜单的调用脚本或函数
yourTool;
%恢复按钮:
集(StartButtonH,“字符串”origString,“启用”,“上”);
结束
函数Exit_CB (FigH EventData)
集(FigH,“DeleteFcn”,);
删除(FigH);
结束
从您的代码删除循环,让GUI触发下一个调用。当脚本“yourTool”完成,Matlab会话是免费的任何访问,在GUI在后台等待。
下一步你可以包括菜单脚本和 输入() 图中的命令,直到命令窗口不需要了。一个下拉菜单或编辑字段可能是有用的,由相同的实现 uicontrol () 命令。
这样的GUI可以省略 键盘 命令和没有需要注入 dbcont

类别

找到更多的在桌面帮助中心文件交换

下载188bet金宝搏


释放

R2021b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!