Arduino: ловить события с камеры через USB
Я работаю над проектом Arduino, который должен общаться через USB с камерами. Существует замечательная библиотека, о которой все знают, когда дело доходит до Arduino и USB: https://github.com/felis/PTP_2.0
Есть много примеров того, как его использовать, и даже примеры того, как общаться с камерами Canon. Даже какая-то обработка событий имеет свой пример на github!
Но ОЧЕНЬ долго я просто не справлялся: ловить событие, когда была сделана фотография!
Я покопался в примере EOSEventLab и во всех других примерах, искал в интернете взад-вперед, но не могу найти ответ на свою проблему. Кажется, все используют "задержку" для запуска кода после захвата... Я не могу быть единственным, кто нуждается в этом.:)
Следующие шаги должны быть сделаны:
- настроить параметры камеры и макс. количество изображений (сделано)
- сделать снимок (сделано)
- выполнить еще один код, когда камера будет готова снова, ака изображение захвачено
- повторите от 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 внутри этого метода. Я не пытался использовать эту информацию для извлечения имени файла и так далее, но это может быть полезно для этого.
Хотя этот ответ великолепен, он относится не ко всем событиям, которые запускает камера, а "только" к тому событию, которое я искал. Здорово иметь возможность ждать, пока будет сделана фотография, а не использовать задержки.