我希望获得一些关于完成一个看似简单的目标的一般指导。我有一台数码单反相机(佳能 EOS 50D),需要编写一个应用程序来告诉相机拍照。我还需要将照片传输到计算机上,并可能将其从相机的存储中删除。一个好处是在我的应用程序中从相机中获得实时预览。我的环境将是 Windows(XP Pro 或 Vista Enterprise)和 .Net 3.5 (C#)。
我做了一些研究,发现了几个选择。我知道一个可以工作,但限制我将来只能使用佳能相机。我从 Canon 找到并下载了一个 SDK,它提供了很多这样的功能。我查看了 SDK,虽然它很广泛并且是用 C 语言编写的,但它确实有 C# 包装器,可以稍微加快开发速度。
我发现的另一个选项称为 Windows 便携式设备。显然,它是一个与实现 PTP 和 MTP 标准的设备通信的 API。它是基于 COM 的,据我所知,它没有 .Net 包装器。然而,这不是表演的终结者。我可以 P/Invoke 我需要的功能,或者编写一个托管 C++ DLL 以在我的应用程序中与相机对话。
我正在寻找任何有 WPD 经验的人给我指点。我仔细阅读了文档并查看了有关传输图像和删除图像的参考资料。但是,我还没有看到提到拍照、获取预览图像或对焦/自动对焦的命令。