c# - 从 Windows C# Canon SDK 与 PTP 或 MTP 捕捉图片

标签 c# automation camera wpd

我希望获得一些关于完成看似简单的目标的一般指导。我有一台 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/

相关文章:

c# - cshtml 元素中的 _layout 文件不会反射(reflect)在从它继承的文件中,除非在同一目录中

firefox - 帮助我在 Win7 上填写表格的免费工具/提示?

.net - 从 .Net 枚举另一个应用程序的 Windows/控件

c# - 重命名 DbContext 类失去与现有迁移/模型快照的关联

c# - MVC 中间件检查 Controller 方法的属性

javascript - 使用 Javascript 打开链接

Android:访问 Android 2.3 的前置摄像头

objective-c - UIImagePickerController 问题?

ios - 使用自定义相机覆盖更改闪光模式

c# - 使用 C# 验证小费计算器中的数据