【问题标题】:Arduino: catching events from camera via USBArduino:通过 USB 从相机捕捉事件
【发布时间】:2017-11-09 10:01:26
【问题描述】:

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

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

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

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

应完成以下步骤:

  1. 设置相机参数和最大值。图片数量(完成)
  2. 拍照(完成)
  3. 当相机再次准备好(即捕获图像)时执行更多代码
  4. 从 2 开始重复直到最大。捕获的图像数量

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

非常感谢您的帮助!

【问题讨论】:

    标签: arduino camera usb mtp ptp


    【解决方案1】:

    是的!!!

    好的,经过数月的代码爬行(可能是因为从 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);
    }
    

    剩下的就看你自己了! “Object Created”是“Capturing done”的同义词。如果我理解正确,您可以在此方法中使用 evt->propCode 获取图像(对象)的地址。我没有尝试将该信息用于文件名提取等,但它可能对此有用。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多