Ich hab' gerade die Faxen dicke. Ich versuche, mit Kameras per Picture Transfer Protocol zu kommunizieren. Dazu verwende ImageCaptureCore's
- requestSendPTPCommand: ... (ICCameraDevice)
Das ist meines Wissens seit 10.6 der empfohlene Weg. Mit einer Nikon (D70) funktioniert das wunderbar.
Das Problem: Mit einer Canon (450D oder 20D) geht nichts. Jeder Aufruf bekommt den ImageCaptureCore-Fehler -9936 zurück ("The operation couldn’t be completed."). Selbst bei elementaren Befehlen, die jedes PTP-Gerät unterstützen muss (z.B. GetDeviceInfo).
Der Fehler tritt auch bei Apples Sample PTPPassThrough auf - er wird nur nicht standardmäßig ausgegeben.
Mit einer eigenen PTP-Implementation geht alles einwandfrei. Ich würde allerdings ungerne PTP vollständig selbst implementieren, wenn es auch über ein eingebautes Framework geht.
Alle Kamerahersteller haben Fehler und eigene Erweiterungen in ihren PTP-Implementationen, aber an dieser elementaren Stelle kann man davon ausgehen, dass die Kameras sich PTP-konform verhalten.
Und da sind sie, meine drei Fragen:
- Kann es wirklich sein, dass Apple eine API rausbringt, die an so elementarer Stelle nicht funktioniert?
- Hat jemand Erfahrungen mit PTP über ImageCaptureCore? Kennt jemand einen Workaround? (außer Canons SDK, das ist off limits).
- Hat jemand eine Nikon- oder Canon-DSLR und Lust, das PTPPassThrough-Sample durchlaufen zu lassen? (in Controller.m in Zeile 269 "[self log:[error description]];" einfügen, bauen und starten, Kamera anschließen, auf "Start Browsing" und dann z.B. auf "Get Storage IDs" klicken). Wenn das Problem reproduzierbar ist, liegt's nicht an meinem Setup und kann getrost an bugreport.apple.com.
Ich hoffe nicht, dass man demnächst immer mehrere Systemversionen abwarten muss, bis ein Framework halbwegs brauchbar ist...
- requestSendPTPCommand: ... (ICCameraDevice)
Das ist meines Wissens seit 10.6 der empfohlene Weg. Mit einer Nikon (D70) funktioniert das wunderbar.
Das Problem: Mit einer Canon (450D oder 20D) geht nichts. Jeder Aufruf bekommt den ImageCaptureCore-Fehler -9936 zurück ("The operation couldn’t be completed."). Selbst bei elementaren Befehlen, die jedes PTP-Gerät unterstützen muss (z.B. GetDeviceInfo).
Der Fehler tritt auch bei Apples Sample PTPPassThrough auf - er wird nur nicht standardmäßig ausgegeben.
Mit einer eigenen PTP-Implementation geht alles einwandfrei. Ich würde allerdings ungerne PTP vollständig selbst implementieren, wenn es auch über ein eingebautes Framework geht.
Alle Kamerahersteller haben Fehler und eigene Erweiterungen in ihren PTP-Implementationen, aber an dieser elementaren Stelle kann man davon ausgehen, dass die Kameras sich PTP-konform verhalten.
Und da sind sie, meine drei Fragen:
- Kann es wirklich sein, dass Apple eine API rausbringt, die an so elementarer Stelle nicht funktioniert?
- Hat jemand Erfahrungen mit PTP über ImageCaptureCore? Kennt jemand einen Workaround? (außer Canons SDK, das ist off limits).
- Hat jemand eine Nikon- oder Canon-DSLR und Lust, das PTPPassThrough-Sample durchlaufen zu lassen? (in Controller.m in Zeile 269 "[self log:[error description]];" einfügen, bauen und starten, Kamera anschließen, auf "Start Browsing" und dann z.B. auf "Get Storage IDs" klicken). Wenn das Problem reproduzierbar ist, liegt's nicht an meinem Setup und kann getrost an bugreport.apple.com.
Ich hoffe nicht, dass man demnächst immer mehrere Systemversionen abwarten muss, bis ein Framework halbwegs brauchbar ist...
Multigrad - 360°-Produktfotografie für den Mac