从Windows C#Canon SDK与PTP或MTP对齐图片

我希望得到一些关于实现看似简单目标的一般指导。我有一个数码单反相机(佳能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命令并查看它是否支持静态图像捕获命令。如果那么你可以尝试一下。     
PTP和MTP都是用于从数码相机(DSC)传输文件的协议。协议不提供触发新图像或设置曝光控制的功能。你将被困在使用相机专用SDK。如果您需要多个供应商支持,尼康有一个SDK,可以为其相机提供与Canon SDK类似的支持。 有关PTP和MTP的更多信息,请访问: http://en.wikipedia.org/wiki/Picture_Transfer_Protocol 和 http://en.wikipedia.org/wiki/Media_Transfer_Protocol 编辑 我忘了提到WIA可能对你有意思,假设你的相机的驱动程序提供了一个WIA界面。     
TallGanglyGuy的评论不正确。 ptp允许您触发新图像并更改曝光等。某些相机的固件仅显示某些ptp命令。   PTP支持常见的设备控制,例如拍照,以便   用户可以利用新的和PC中的PC /相机组合   不同的方式,不需要额外的软件。 引自http://msdn.microsoft.com/en-us/windows/hardware/gg463507.aspx#EXC     
试试我的Eos框架:https://github.com/esskar/Canon.Eos.Framework 恕我直言,它是SDK附带的.cs文件的更好选择。     
这是非常通用的,但它可能有所帮助。 我不得不编写一个应用程序,它使用来自两个不同供应商的两个不同的条形码扫描器,使用不同的SDK。我创建了一个接口,定义了我想编写的方法和事件,然后编写了实现我的接口的适配器类。 这在我的情况下效果很好,从一个切换到另一个是非常无缝的。如果采用相同的方法,则不会完全依赖于一个SDK。     

要回复问题请先登录注册