Arduino:通过USB从相机捕捉事件

时间:2017-11-09 10:01:27

标签: arduino camera usb mtp ptp

我正在开展一个需要通过USB与相机进行通信的arduino项目。有一个很棒的图书馆,每个人都知道arduino和USB:https://github.com/felis/PTP_2.0

有很多关于如何使用它的例子,甚至是如何与佳能相机通信的例子。甚至某种事件处理都有它在github上的例子!

但是很长一段时间我都没有完成它:在拍摄照片时捕捉事件

我深入研究了EOSEventLab example和所有其他例子,上下搜索了互联网,但我无法找到问题的答案。在捕获之后,每个人似乎都使用“延迟”来触发代码......我不可能是唯一需要此代码的人。 :)

应该执行以下步骤:

  1. 设置相机参数和最大值图像数量(完成)
  2. 拍照(完成)
  3. 当相机再次准备好时再执行一些代码,即捕获图像
  4. 从2.重复到最大拍摄的图像数量
  5. 如果需要,我可以提供一些代码,但主要是EOSEventLab示例中的代码。

    非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

YES !!!

好的,经过几个月的代码爬行(也许是因为从arduino IDE切换到Visual Studio ==更好的代码突出显示,代码完成......)我找到了答案。它直接坐在我面前!

标题内的https://github.com/felis/PTP_2.0/tree/master/examples/Canon_EOS/EOSRemote

上的cpp文件

必须将方法“OnObjectCreated”添加到 eoseventhandlers.h

virtual void OnObjectCreated(const EOSEvent *evt);

并在 eoseventhandlers.cpp

中实现此方法
void EosEventHandlers::OnObjectCreated(const EOSEvent *evt)
{
    E_Notify(PSTR("capturing done!"), 0x80);
}

剩下的由你决定! “对象创建”是“捕获完成”的同义词。如果我理解正确,您可以使用此方法中的 evt-> propCode 获取图像(对象)的地址。我没有尝试将这些信息用于文件名提取等,但它可能对此有用。

虽然这个答案很棒,但它并不适用于相机触发的所有事件,而是“仅”我正在寻找的事件。很高兴能够等待拍摄照片而不是使用延迟。

相关问题