Noch zwei Feststellungen für den heutigen Abend:
1) Problem: bei geöffnetem user interface ist nur einmaliges scannen und einmaliges Übertragen von Bildern möglich.
Lösung:
Delphi-Quellcode:
{Method to transfer the images}
procedure TTwainSource.TransferImages();
enthält
Delphi-Quellcode:
repeat
{ ... hier werden alle ausstehenden Bilder übertragen, bis PendingXfers = 0 ist ... }
until Done;
{Disable source}
Enabled := False; // <--- das ist Blödsinn.
end;
weg mit dem enabled! Sobald die Variante ohne UI fertig ist, wird eine message in der message loop des virtuellen Fensters bearbeitet, die SourceDisable zur Folge hat, wohin ggf. der OnSourceDisable Event ausgelöst wird. Mit UI wird diese Eventfolge beim Schließen des UIs durch den Nutzer angestoßen.
2) Creative LiveCam Vista mag (wie wohl viele andere auch...) nach dem ersten Bilderholen nicht mehr aufnehmen
Oft ist es notwendig, eine Quelle neu zu laden. Dies habe ich nun auf den Start des Importierens verlegt. Dies macht die Sache im Vergleich zu fortlaufender Ausführung merklich langsamer, jedoch ist das die einzige Methode, die bei allen meinen Testquellen funktioniert.
Delphi-Quellcode:
if assigned(CallbackEvent) then
begin
MainTwainObject.OnTwainAcquire := CallbackEvent;
end;
with MainTwainObject.Source[MainTwainSource] do
begin
if Loaded then UnloadSource; // <-- Neustart für mehr Kompatibilität
Loaded := TRUE;
ShowUI := TRUE;
TransferMode := TransferModeChoice;
Enabled := TRUE;
end;
das "streamen" von Bilddaten werde ich ohnehin anders lösen, daher ist dieser Kompromiss hinnehmbar.