在Matlab中从Java GUI调用2个类
由于Java一旦使用就无法卸载本机库(在Matlab中;请参阅),因此我尝试从Matlab中调用2个GUI类。我正在从相机上抓取图像,然后将其保存到磁盘上。我想使用一个Java类与camera通信,而另一个类(GUI)在Matlab中仍然是开放的。这可能吗?代码如下: 一, 二, 三,在Matlab中从Java GUI调用2个类,java,user-interface,matlab,camera,Java,User Interface,Matlab,Camera,由于Java一旦使用就无法卸载本机库(在Matlab中;请参阅),因此我尝试从Matlab中调用2个GUI类。我正在从相机上抓取图像,然后将其保存到磁盘上。我想使用一个Java类与camera通信,而另一个类(GUI)在Matlab中仍然是开放的。这可能吗?代码如下: 一, 二, 三, 在Matlab中,我首先调用Gui.main([]),然后调用Gui.main2()。这是第一次奏效。但是当我再次调用Gui.main2()时,Matlab什么也不做。我觉得这是个坏代码。谢谢回复 只是一个假设,
在Matlab中,我首先调用
Gui.main([])
,然后调用Gui.main2()。这是第一次奏效。但是当我再次调用Gui.main2()
时,Matlab什么也不做。我觉得这是个坏代码。谢谢回复 只是一个假设,没有更多信息:
此支票:
if (MainWindow.fs_c == 1) {
MainWindow.commandVal = 5;
}
稍后(请注意,commandVal
在第一次检查成功后将为5):
问题是:
在第一次运行中,commandVal
设置为5,假设MainWindow.fs_c
最初为1。
因此MainWindow.fs_c=0代码>被执行
在第二次运行中,MainWindow.fs_c==1
为false(MainWindow.fs_c
现在为0),并且MainWindow.commandVal
也设置为0。因此,除了睡眠100毫秒外,该方法什么都不做。只是一个假设,没有更多信息:
此支票:
if (MainWindow.fs_c == 1) {
MainWindow.commandVal = 5;
}
稍后(请注意,commandVal
在第一次检查成功后将为5):
问题是:
在第一次运行中,commandVal
设置为5,假设MainWindow.fs_c
最初为1。
因此MainWindow.fs_c=0代码>被执行
在第二次运行中,MainWindow.fs_c==1
为false(MainWindow.fs_c
现在为0),并且MainWindow.commandVal
也设置为0。因此,该方法除了休眠100毫秒外,什么都不做。您是否将其放入调试器并检查其停止位置?您能否重新格式化代码以确保可读性并添加缺少的部分?例如,MainWindow.fs_c
在哪里定义?您是否将其放入调试器并检查其停止位置?您是否可以重新格式化代码以确保可读性并添加缺少的部分?例如,MainWindow.fs\u c
在哪里定义?非常感谢!我做了很明显的事情,删除了你建议的两行令人困惑的句子,效果很好@马卡罗尼我不知道你想要实现的逻辑。一个快速的解决方案是省略MainWindow.fs_c=0代码>行,但我想这可能会破坏其他逻辑。所以很不幸,除了调试和检查您尝试实现的逻辑之外,我不能给您任何其他好的建议。非常感谢!我做了很明显的事情,删除了你建议的两行令人困惑的句子,效果很好@马卡罗尼我不知道你想要实现的逻辑。一个快速的解决方案是省略MainWindow.fs_c=0代码>行,但我想这可能会破坏其他逻辑。不幸的是,除了调试和检查您试图实现的逻辑之外,我不能给您任何其他好的建议。
public static void grabImage(int commandVal){
while (MainWindow.kkk == 1) {
if (MainWindow.fs_c == 1) {
MainWindow.commandVal = 5;
}
if (MainWindow.commandVal == 5 || MainWindow.commandVal == 6){
cImage.sendFrame(0);
JFileChooser save_d = new JFileChooser();
File saveFile = save_d.getSelectedFile();
cImage.writeImage(saveFile + ".jpg");
MainWindow.fs_c = 0;
MainWindow.commandVal = 0;
mySerial.write("\r");
System.out.println("Camera Ready...");
break;
}
else if (commandVal == -1) {
MainWindow.commandVal = 0;
mySerial.write("\r");
status_t.setText("Camera Ready...");
}
else {
try {
Thread.sleep(100);
} catch (Exception e) {
}
}
}
}
if (MainWindow.fs_c == 1) {
MainWindow.commandVal = 5;
}
MainWindow.fs_c = 0;
MainWindow.commandVal = 0;