다음과 같은 문제가 있습니다 : 두 대의 EOS550D 카메라가 내 PC에 연결되어 있습니다. 내 프로그램에는 QThread 기반 클래스가 있는데, 이는 카메라에 명령을 보냅니다. 두 대의 카메라를 구별하는데 문제가 없으며 두 가지 모두 제어 할 수 있지만 명령은 병렬로 전송되지만 두 번째 카메라는 먼저 초점을 맞춘 후 촬영을 완료 한 후 으로 작업을 시작합니다. SDK의 제한 사항입니까 아니면 무언가 잘못 되었나요? 이 작업은 두 대의 PC 및 클라이언트/서버 아키텍처를 사용하여 수행 할 수 있지만 하나의 PC에서 시도하고 싶습니다.)EDSDK를 통한 캐논 카메라의 병렬 제어
EDSDK 및 카메라는 컨트롤 클래스에서 초기화되고 카메라 세션은 스레드에서 관리됩니다 클래스 개체. 스레드에 대한 전화 :
void CameraController::testShot()
{
//some variable checks and path set-ups
leftCameraThread->setPath(path1);
leftCameraThread->start();
rightCameraThread->setPath(path2);
rightCameraThread->start();
}
스레드 실행() 함수 :
void CameraControlThread::run()
{
EdsSendCommand(_camera, kEdsCameraCommand_TakePicture , 0);
}
EDSDK의 V2.10
명령을 발행하기 전과 반환 한 후에 고정밀 타임 스탬프를 출력 할 수 있습니다. – PlasmaHH
그것은 나에게 무엇을 줄까요? 간단한 테스트가있었습니다. 첫 번째 카메라를 벽으로 돌 렸으므로 약 2 초 동안 초점을 맞출 수 없습니다. 나는 2 초가 다른 명령을 보내기에 충분하다고 생각한다. –
명령이 실제로 전송 된 시간 (또는 적어도 syscall이 만들어진 시간)을 알려줍니다. 따라서 1) 명령이 얼마나 오래 걸리는지와 2) 타이밍의 차이가 이미 시스템 호출을 실행하는 수준에 있는지 확인할 수 있습니다. – PlasmaHH