Hallo allerseits,
mich quält gerade folgendes Problem:
Ich schreibe zur Zeit eine VCL-Anwendung zur Ansteuerung einer Digitalkamera. Die damit verbundenen Bibliotheken verwenden Callbackfunktionen. Wenn ich also beispielsweise ein Bild schiesse, rufe ich dazu die Funktion Capture(..) auf. Die dll ruft dann praktischerweise zurück, indem sie die Funktion ImageReady(..) aufruft, um mitzuteilen, dass das Bild heruntergeladen werden kann.
Jetzt möchte ich aber viele Bilder hintereinander schiessen .. am liebsten mit einer for-Schleife:
Bei der for-Schleife kommt die Kamera natürlich nicht hinterher. Ich weiss gar nicht, ob ImageReady überhaupt aufgerufen wird, oder ob zuerst die for-Schleife abgearbeitet wird.
Ich würde ja einfach mit Sleep warten bis die Kamera wieder bereit ist, aber da meine Anwendung Single-Thread ist, passiert in der Zwischenzeit nichts .. die Anwendung widmet sich voll und ganz dem Schlaf.
Wie kann ich das Problem möglichst einfach und zügig lösen?
Vielen Dank schon mal
PaRoX
mich quält gerade folgendes Problem:
Ich schreibe zur Zeit eine VCL-Anwendung zur Ansteuerung einer Digitalkamera. Die damit verbundenen Bibliotheken verwenden Callbackfunktionen. Wenn ich also beispielsweise ein Bild schiesse, rufe ich dazu die Funktion Capture(..) auf. Die dll ruft dann praktischerweise zurück, indem sie die Funktion ImageReady(..) aufruft, um mitzuteilen, dass das Bild heruntergeladen werden kann.
Jetzt möchte ich aber viele Bilder hintereinander schiessen .. am liebsten mit einer for-Schleife:
Code:
for (int i=0; i<10; i++)
{
Capture(..);
Sleep(2000); // Warten bis Bild fertig ist .. funktioniert nicht, da Single-Thread
}
Bei der for-Schleife kommt die Kamera natürlich nicht hinterher. Ich weiss gar nicht, ob ImageReady überhaupt aufgerufen wird, oder ob zuerst die for-Schleife abgearbeitet wird.
Ich würde ja einfach mit Sleep warten bis die Kamera wieder bereit ist, aber da meine Anwendung Single-Thread ist, passiert in der Zwischenzeit nichts .. die Anwendung widmet sich voll und ganz dem Schlaf.
Wie kann ich das Problem möglichst einfach und zügig lösen?
Vielen Dank schon mal
PaRoX
Zuletzt bearbeitet: