C++의 edsdk 개발에 멀티 헤드를 추가하려고 시도하지만 "takePictures()"에서 "takeSinglePicture()"를 실행할 때 코드가 멈추고 카메라가 하나의 그림을 가져 오지 않습니다. 이 코드를 수정하십시오.C++의 Canon EDSDK MultiThreading
일반 노트에void CameraControl::takePictures(int n,int time) {
openSession();
CTimer timer;
for (int i = 0; i < n; i++) {
timer.start();
std::cout<<std::this_thread::get_id()<<endl;
takeSinglePicture();
int t = timer.stop();
if (t < time) std::this_thread::sleep_for(std::chrono::milliseconds(time-t));
std::cout << t << std::endl;
}
closeSession();
}
void CameraControl::takePicturesMT(int n,int time) {
std::cout << std::this_thread::get_id() << endl;
std::thread cameraThread([&] {CameraControl::takePictures(n,time); });
cameraThread.join();
}
void CameraControl::takeSinglePicture() {
EdsSendCommand(theCamera, kEdsCameraCommand_PressShutterButton, 1); // Half
EdsSendCommand(theCamera, kEdsCameraCommand_PressShutterButton, 3); // Completely
EdsSendCommand(theCamera, kEdsCameraCommand_PressShutterButton, 0); // Off
}