我正在编写一个GUI应用程序,该应用程序使用Raspbian中的gphoto2软件包从相机拍摄图像。当我手动将命令gphoto2 --capture-image-and-download
输入终端时,相机会拍摄图像并将其保存到当前文件夹中。但是,当我通过Java代码中的按钮执行相同的命令时,相机会拍摄图像,但不会保存。来自bash的重定向输出表示图像保存到相机(我可以处理)但图像既不保存到相机也不保存到当前目录,事实上,它似乎根本没有保存
这是按钮代码:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Runtime com = getRuntime();
try {
//Reset USB Device to prevent warnings
Process mand = com.exec("../../../usbreset /dev/bus/usb/001/005");
//Capture image
Process get = com.exec("gphoto2 --capture-image-and-download");
Send Bash output(s) to text area
BufferedReader in1 = new BufferedReader(new InputStreamReader(mand.getInputStream()));
BufferedReader in2 = new BufferedReader(new InputStreamReader(get.getInputStream()));
String inputLine1;
while ((inputLine1 = in1.readLine()) != null) {
msgArea.append(inputLine1 + "\n");
}
in1.close();
String inputLine2;
while ((inputLine2 = in2.readLine()) != null) {
msgArea.append(inputLine2 + "\n");
}
in2.close();
} catch (IOException ex) {
Logger.getLogger(Home.class.getName()).log(Level.SEVERE, null, ex);
}
}
如果问题存在于我的bash命令或我的Java代码中,我无法解决问题。我已经尝试了相机中存在和不存在卡的情况,并且还尝试使用指定的图像文件名,但都无济于事。我不确定它是否有意义,但Pi是通过PuTTY ssh控制的,在Debian笔记本电脑上使用X11转发。 Java是用Netbeans 8编写的.GPhoto2版本是2.4.14,相机是佳能EOS 1100D,但我怀疑这最后一个事实是需求过剩。
如果有人能提供帮助,我真的很感激 - 这是我大学最后一年项目的一个重要部分,所以我必须尽快把它排序好!
提前致谢,
盖伊
答案 0 :(得分:1)
好的,我已经回答了我自己的问题。
bash的输出仅在拍摄照片之前发送。之后,终端输出没有被发送,所以我错过了一个错误,一个权限被拒绝的工作。所以解决方案只是在sudo
命令之前添加gphoto2
。最终简单的解决方案,但令人沮丧的情况!