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



我正在进行一个arduino项目,该项目需要通过USB与摄像头进行通信。当谈到arduino和USB时,每个人都知道有一个很棒的库:https://github.com/felis/PTP_2.0

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

但很长一段时间以来,我都没有完成:在拍照时捕捉到事件

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

应执行以下步骤:

  1. 设置相机参数和最大图像数(已完成)
  2. 拍张照片(完成)
  3. 当相机再次准备好,也就是图像被捕获时,再执行一些代码
  4. 从2开始重复。直到捕捉到最大数量的图像

如果需要,我可以提供一些代码,但主要是EOSEventLab示例中的代码。

非常感谢你的帮助!

是!!!

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

它在cpp文件的头中https://github.com/felis/PTP_2.0/tree/master/examples/Canon_EOS/EOSRemote

必须将方法"OnObjectCreated"添加到eoeventhandlers.h

virtual void OnObjectCreated(const EOSEvent *evt);

并在eoeventhandlers.cpp中实现此方法

void EosEventHandlers::OnObjectCreated(const EOSEvent *evt)
{
E_Notify(PSTR("capturing done!"), 0x80);
}

剩下的由你决定!"Object Created"是"Capturing done"的同义词。如果我理解正确,你可以在这个方法中使用evt->propCode获得图像(对象)的地址。我没有尝试使用这些信息来提取文件名等等,但它可能对此有用。

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

最新更新