ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
1256
1256
EMPFEHLEN
-
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:
Code :1 2 3 4 5
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
PaRoXGeändert von PaRoX (10.12.08 um 16:07 Uhr) Grund: 4 Buchstaben eines 5-Buchstabenwortes vergessen... :-)
-
Hy,
kannst du ImageReady() nicht überschreiben? Dann lös doch dort einfach nochmal Capture() aus. So stellst du sicher, das die Bearbeitung des ersten Bildes auch vollständig ist.
mfgnoch 'n bischen Werbung in eigener Sache: www.ice-only.de
-
Hmmh ..
also ImageReady ist ja eine Funktion in meinem Code. Die Kamera-dll ruft nur eben diese Funktion auf, sobald das Bild heruntergeladen werden kann.
so sieht ImageReady aus ..
Code :1 2 3 4 5 6
LONG32 CALLBACK ImageReady(ULONG32 lCam, ULONG32 ulObjHandle, void* pParam) { LONG32 lRet = 0; lRet = DownloadImage(lCam, ulObjHandle); return lRet; }
und DownloadImage gibt es nur im Pseudocode ..
Code :1 2 3 4 5 6 7 8
LONG32 DownloadImage(ULONG32 lCam, ULONG32 ulObjHandle) { LONG32 lRet = 0; // ... Lade Bild herunter .. return lRet; }
Die prozedurale Reihenfolge schaut so aus:
Capture-Befehl an Kamera-dll -> Kamera-dll ruft ImageReady auf (Callback) -> ImageReady ruft DownloadImage auf ( Bild wird heruntergeladen ) -> fertig
Zum Aufruf von Capture:
Ich schätze du meinst ich sollte die Funktion nochmals aufrufen sobald das Bild heruntergeladen wurde .. also in meinem Fall in DownloadImage. Ich denke das werde ich mal probieren.
Ähnliche Themen
-
Einer C Funktion eine C++ Member-Funktion zum Callback übergeben.
Von arothe im Forum C/C++Antworten: 3Letzter Beitrag: 11.02.09, 12:31 -
Callback Funktion programmieren
Von chefsalat- im Forum VisualStudio & MFCAntworten: 5Letzter Beitrag: 01.06.07, 10:06 -
DLL: Globale Variable in CallBack Funktion verwenden
Von KaiAusDerKiste2000 im Forum C/C++Antworten: 4Letzter Beitrag: 13.01.06, 11:12 -
While Schleife mit SQL Funktion
Von SaschaW im Forum PHPAntworten: 5Letzter Beitrag: 29.12.05, 01:14 -
Callback Funktion?
Von Funjoy im Forum PHPAntworten: 0Letzter Beitrag: 30.12.04, 17:14





Zitieren
Login






