Arduino: ловить события с камеры через USB

Я работаю над проектом Arduino, который должен общаться через USB с камерами. Существует замечательная библиотека, о которой все знают, когда дело доходит до Arduino и USB: https://github.com/felis/PTP_2.0

Есть много примеров того, как его использовать, и даже примеры того, как общаться с камерами Canon. Даже какая-то обработка событий имеет свой пример на github!

Но ОЧЕНЬ долго я просто не справлялся: ловить событие, когда была сделана фотография!

Я покопался в примере EOSEventLab и во всех других примерах, искал в интернете взад-вперед, но не могу найти ответ на свою проблему. Кажется, все используют "задержку" для запуска кода после захвата... Я не могу быть единственным, кто нуждается в этом.:)

Следующие шаги должны быть сделаны:

  1. настроить параметры камеры и макс. количество изображений (сделано)
  2. сделать снимок (сделано)
  3. выполнить еще один код, когда камера будет готова снова, ака изображение захвачено
  4. повторите от 2. до макс. количество снимков

Я могу дать немного кода, если это необходимо, но в основном это код, найденный в примере EOSEventLab.

Большое спасибо за Вашу помощь!

1 ответ

Решение

ДА!!!

Хорошо, после нескольких месяцев обхода кода (и, возможно, из-за перехода с IDE arduino на Visual Studio == улучшенная подсветка кода, завершение кода...) я нашел ответ. Он сидел прямо перед моим лицом!

Он находится внутри заголовка cpp-файлов на https://github.com/felis/PTP_2.0/tree/master/examples/Canon_EOS/EOSRemote

Нужно добавить метод "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 внутри этого метода. Я не пытался использовать эту информацию для извлечения имени файла и так далее, но это может быть полезно для этого.

Хотя этот ответ великолепен, он относится не ко всем событиям, которые запускает камера, а "только" к тому событию, которое я искал. Здорово иметь возможность ждать, пока будет сделана фотография, а не использовать задержки.

Другие вопросы по тегам