我希望能够获得一些关于实现一个看似简单的目标的通用指导。我有一台数码单反相机(佳能EOS 50D),需要编写一个应用程序,告诉相机拍摄照片。我还需要将照片传输到计算机,并可能从相机存储中删除它。如果能在我的应用程序中获得来自相机的实时预览,那就更好了。我的环境将是Windows(XP Pro或Vista Enterprise)和.Net 3.5(C#)。
我已经做了一些研究,并找到了几个选项。其中一个我知道会起作用,但限制我只能在将来使用佳能相机。我已经找到并下载了一个来自佳能的SDK,提供了很多这方面的功能。我已经查看了SDK,虽然它非常广泛且使用C编写,但它确实有C#包装器,可以加快开发速度。
我找到的另一个选项称为“Windows便携式设备”。显然,这是一个API,可以与实现PTP和MTP标准的设备进行通信。它基于COM,据我所知,它没有任何.Net包装器。不过,这并不是阻碍开发的问题。我可以P/Invoke所需的功能,或编写一个托管的C++ DLL,在我的应用程序中使用它来与相机交互。
我正在寻找有WPD经验的人给我指点。我已经浏览了文档,并看到了有关传输图像和删除图像的引用。但是,我没有看到拍照、获取预览图像或对焦/自动对焦等命令的提及。