我希望获得一些关于完成看似简单的目标的一般指导。我有一台 DSLR 相机(佳能 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 经验的人给我指点。我仔细阅读了文档并看到了有关传输图像和删除图像的引用。但是,我还没有看到有人提到拍照、获取预览图像或说对焦/自动对焦的命令。
最佳答案
WPD api 提供命令 WPD_COMMAND_STILL_IMAGE_CAPTURE_INITIATE
我不确定你的相机是否支持它,但它应该足够简单,可以找出来。如果您可以从驱动程序开发工具包中获取“wpdinfo”工具并在连接相机的情况下启动它,然后向它发送 WPD_COMMAND_CAPABILITIES_GET_SUPPORTED_COMMANDS 命令并查看它是否支持静态图像捕获命令。如果是这样,那么您可以尝试一下。
关于c# - 从 Windows C# Canon SDK 与 PTP 或 MTP 捕捉图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1710352/