在Matlab中从Java GUI调用2个类

在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什么也不做。我觉得这是个坏代码。谢谢回复 只是一个假设,

由于Java一旦使用就无法卸载本机库(在Matlab中;请参阅),因此我尝试从Matlab中调用2个GUI类。我正在从相机上抓取图像,然后将其保存到磁盘上。我想使用一个Java类与camera通信,而另一个类(GUI)在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;