Erstmal Hallo allen, ich bin neu hier. Und auch relativ neu in Perl. Aber ich hab in meinem Leben schon viel programmiert.
Aber dieses Problem kann ich irgendwie nicht lösen:
@arr = split('/',$datagram1);
$arr_length = @arr;
$new_photo = $arr[$arr_length-1]."";
print "Open #".$new_photo."#\n";
sleep(3);
system("killall shotwell");
#$new_photo = "DSC_0198.JPG";
system("shotwell $new_photo &");
print "test\n";
Das Ganze ist Teil eines Programms, was von einer SD-WLAN-Karte, die in einer Kamera steckt, die Bilder direkt auf dem Rechner darstellen soll.
Eigentlich funktoniert das auch alles, also Bilder werden runtergeladen, wenn das Foto geschossen wurden, nur mit der direkten Darstellung harpert es noch ein wenig, der meiste Code ist nicht von mir.
Link zum Projekt:
http://sourceforge.net/p/transsvr/wiki/Home/
Der Code da oben tut eigentlich genau das was er soll, er extrahiert den Dateinnamen und soll jetzt einfach nur meinen Bildbetrachter im Hintergrund öffnen, damit das Foto sofort sichtbar auf dem Computer ist (Bildkontrolle).
Jetzt zum Problem:
Wenn ich diesen Code ausführe, öffnet er auch das erste Bild, dass nach dem Starten des Scripts geschossen wurde, aber er kommt nicht wieder zurück, also das "test" erreicht er nicht, erst wenn ich manuell der Bildbetrachter shotwell schliesse.
Jetzt kommst:
Wenn ich jetzt aber, das nächste zu erwartende Bild,aktuelles letztes Bild in der Kamera z.B. DSC_0197.JPG nehme und händisch $new_photo = "DSC_0198.JPG"; setze, arbeitet er wie erwartet. Also shotwell wird im Hintergrund gestartet und er erreicht sofort das prin t "test".
Die Variable die durch: $new_photo = $arr[$arr_length-1].""; erzeugt wird ist korrekt, ich habe extra schon ein ."" angehängt, damit ich sicher bin, dass das auch auch string ist...
Vielleicht hat jemand eine Idee, wie ich das lösen kann.
Viele Grüße.
Last edited: 2013-09-05 20:11:02 +0200 (CEST)