2017-11-09 11 views
2

저는 카메라로 USB를 통해 통신해야하는 arduino 프로젝트를 진행하고 있습니다. 모든 사람들이 arduino와 USB에 관해 알 수있는 훌륭한 라이브러리가 있습니다 : https://github.com/felis/PTP_2.0Arduino : USB를 통해 카메라에서 이벤트 잡기

사용법에 대한 예제가 많이 있으며, Canon 카메라와 통신하는 방법의 예제도 있습니다. 어떤 종류의 이벤트 처리조차 github에 대한 예제가 있습니다!

그러나 오랜 시간 동안 나는 단지 그것을 끝내지 못합니다 : 사진을 찍을 때 이벤트를 잡기!

나는 EOSEventLab example과 다른 모든 예를 파헤 치면서 인터넷을 위아래로 검색했지만 내 문제에 대한 답을 찾을 수 없습니다. 모두가 캡처 한 후에 코드를 트리거하는 데 "지연"을 사용하는 것 같습니다. 필자 만이이를 필요로하는 것은 아닙니다. :)

다음 단계를 수행해야합니다 :

  1. 설정 카메라 매개 변수와 최대. 이미지 수
  2. 는 (완료) 사진 카메라가 다시 일명 이미지가 최대까지 2에서
  3. 반복을 캡처 준비가되었을 때
  4. 좀 더 코드를 실행을 (완료). 이미지 개수가 캡처됩니다.

필요한 경우 코드를 제공 할 수 있지만 주로 EOSEventLab 예제에있는 코드입니다.

도움 주셔서 감사합니다.

답변

0

예 !!!

몇 달 동안 코드를 크롤링 한 후 (그리고 아마도 arduino IDE에서 Visual Studio로 전환했기 때문에 == 코드 강조 표시, 코드 완성 ...) 대답을 찾았습니다. 그것은 내 얼굴 앞에 직접 앉아 있었다! https://github.com/felis/PTP_2.0/tree/master/examples/Canon_EOS/EOSRemote

하나에

그것은 헤더 내부의 CPP 파일은 eoseventhandlers.cpp에서이 방법을 eoseventhandlers.h

virtual void OnObjectCreated(const EOSEvent *evt); 

에 방법 "OnObjectCreated"를 추가하고 구현해야

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

나머지는 작동 중입니다. 너에게! "Object Created"는 "Capturing done"과 동의어입니다. 만약 내가 올바르게 이해하면이 방법 안에 evt-> propCode을 사용하여 이미지 (객체)에 주소를 얻습니다. 나는 그 정보를 파일 이름 추출에 사용하려고 시도하지는 않았지만 그렇게하면 유용 할 수 있습니다.

이 답변은 훌륭하지만 카메라가 트리거하는 모든 이벤트에는 적용되지 않지만 내가 찾고 있었던 이벤트는 "유일한"이벤트에만 적용됩니다. 지연을 사용하는 대신 사진을 캡처 할 때까지 기다리는 것이 좋습니다.