2017-02-22 1 views
1

Ich habe meine Anwendung, die Steuerung der Kamera mit C# und ziemlich leichten EDSDKWrapper (die ich ein bisschen geändert habe). Ich kann im Grunde alles schon steuern, wie LiveView, Fokussieren (Auto + Manuell), Einstellen und Auslesen verschiedener Eigenschaften und Aufnehmen von Bildern, wahlweise mit automatisiertem Focus Bracket/Stacking.Canon EDSDK: Das Aufnehmen von Fotos in LiveView bricht das LV für immer

Allerdings gibt es ein Problem: Wenn ich die Live View starten und dann nehmen Sie ein Foto, um die Standardmethode unter Verwendung von

SendCommand(Camera.Handle, PressShutterButton, ShutterButton_Completely_NonAF); 
SendCommand(Camera.Handle, PressShutterButton, ShutterButton_OFF); 

es funktioniert, ich die Bilder herunterladen oder den Download abbrechen mit Download + DownloadComplete oder DownloadCancel Funktionen. Leider ist es danach nicht mehr möglich, das LiveView-Bild zu erhalten, das DownloadEvfImage gibt OBJECT_NOT_READY zurück und lässt es für immer zurückkehren.

Der einzige Ausweg besteht darin, den LiveView erneut zu stoppen und zu starten ODER den LiveView-Autofokus mit dem Befehl DoEvfAF zu starten. Aber ich möchte das vermeiden.

Dies geschieht sowohl auf Canon 5D Mark IV und 5D Mark III und das gleiche Problem passiert auch auf einem völlig anderen C# Framework mit einem anderen Beispiel, das ich gerade aus dem Internet heruntergeladen. Das EOS-Dienstprogramm scheint jedoch gut zu funktionieren, so scheint es, dass es einen Weg gibt.

Funktioniert die "LiveView + Foto + LiveView wieder" sogar in Ihrer App, ob C# oder C++? Gibt es einen Trick, den ich ausführen muss?

Ich habe schon viel Zeit damit verbracht, einen Fehler zu finden, wie zum Beispiel nicht freigegebene Daten und die Suche nach Antworten im Web, aber bisher kein Glück.

Antwort

2

Endlich gefunden, was passiert! Um andere wissen zu lassen, bestand der Haken darin, dass die Kamera das Bild nach der Aufnahme auf dem LCD-Bildschirm zeigte (d. H. Eine normale Überprüfung). Während dieser Anzeige funktioniert der LiveView nicht! Das EOS-Dienstprogramm speicherte die Bilder nicht auf der Kamera-Karte. Es gab also nichts zu überprüfen, und der LV wurde nicht unterbrochen.

Wie auch immer, die Lösung/Problemumgehung ist es, das überprüfte Bild auf dem LCD loszuwerden. Bisher habe ich zwei Möglichkeiten gefunden, die wieder den LV erhalten arbeiten seamslessly, ohne die Notwendigkeit, ihn auszuschalten und auf und schlug den Spiegel:

Simulieren die Halb Drücken des Auslösers

Ie diese einfache Code gibt den LV in den normalen Arbeitsmodus:

SendCommand(Camera.Handle, PressShutterButton, ShutterButton_Halfway_NonAF); 
SendCommand(Camera.Handle, PressShutterButton, ShutterButton_OFF); 

Spiel mit den kEdsPropID_Evf_OutputDevice Fahnen

Sie können die LV Ausgabe an die Kamera statt des PC ändern, den PC-Ausgang ausgeschaltet wird, und dann schalten Sie den PC wieder ein. Der Spiegel wird sich nicht bewegen. Das heißt, zuerst kEdsPropID_Evf_OutputDevice auf KEdsEvfOutputDevice_TFT setzen und dann sofort auf agan stellen, aber diesmal auf (oder KEdsEvfOutputDevice_TFT | KEdsEvfOutputDevice_PC, wenn Sie die Kameraausgabe beibehalten wollen).

Verwandte Themen