Directory Contents Search >>


DaVinci 4: Benutzung der TWAIN-Schnittstelle

Die TWAIN Scanner-Schnittstelle ist eine standardisierte Schnittstelle zur Übertragung von Bildern, überlicherweise eingesetzt zur Übertragung von Bildern von einem Scanner (Flachbettscanner, digitale Kamera, Handscanner...) in ein Anwendungsprogramm.

Leonardo erleichtert die Verwendung der TWAIN-Schnittstelle mittels einiger Standardfunktionen aus der davinci4.dll bzw. davinci4_64.dll.

Die eigentliche TWAIN-Schnittstelle befindet sich in der Datei TWAIN32.DLL, die mit den meisten Scannern mitgeliefert wird und im Windows-Ordner abgelegt werden sollte. Da Ihr Anwendungsprogramm aber auch dann fehlerfrei arbeiten sollte, wenn die TWAIN32.DLL auf dem Anwendungsrechner nicht installiert ist, ist der Einsatz der Leonardo TWAIN... Funktionen sinnvoll.

Vereinfachtes API

Die Funktion TWAINGetImage kann von Anwendungen als vereinfachtes API benutzt werden, um ein Bild mit einem einzigen Funktionsaufruf zu scannen. Dadurch kann der Scan-Vorgang nur Modal ausgeführt werden, d.h. während des Scannens ist die Anwendung nicht zur Interaktion mit dem Anwender bereit. Die Benutzung weiterer Funktionen ist dann nicht mehr erforderlich.

Immer noch sehr einfach, aber mit mehr Einstellmöglichkeiten, lässt sich der Scanvorgang durch die Funktion TWAINAquireModal steuern.

Initialisierung

Eine Anwendung, die die TWAIN-Schnittstelle einsetzt, sollte immer bei der Initialisierung die Funktion TWAINInitialize aufrufen. Diese gibt ein Handle zurück, das für alle weiteren Aufrufe der TWAIN-Funktionen benötigt wird. Bei Programmende sollten Sie die Funktion TWAINTerminate aufrufen, um dieses Handle wieder freizugeben, wobei ein evtl. geöffnetes Fenster eines Scan-Programmes geschlossen wird. Die TWAINInitialize-Funktion kehrt auch dann ohne Probleme zurück, wenn keine TWAIN.DLL existiert.

Auswahl der Datenquelle

Ähnlich der Einrichtung des Standarddruckers unter Windows muss vor dem ersten Scan-Vorgang nach dem Einrichten eines Scanners die Datenquelle ausgewählt werden. Falls am Anwendungsrechner mehrere Scanner im Einsatz sind, kann dies auch während des Programmbetriebes jederzeit notwendig werden.

Um die TWAIN.DLL zur Auswahl eines Scanners aufzufordern, rufen Sie die Funktion TWAINSelectDS auf. Die Auswahlergebnisse werden in einer Datei abgelegt.

Scan-Vorgang veranlassen

Durch Aufruf der Funktion TWAINAquire fordern Sie ein Bild vom Scanner an. Das Benutzerinterface des Scanners öffnet ein Fenster und führt den Scan-Vorgang durch. Währenddessen bleibt das Anwendungsprogramm voll betriebsbereit!

Die Applikation darf die TWAINAquire-Funktion nicht aufrufen, solange noch TWAIN-Datenquellen geöffnet sind. Um dies festzustellen und evtl. Menüpunkte grau zu kennzeichnen, stellt Leonardo die Funktion TWAINIsDSMOpen zur Verfügung.

Damit der Scanner korrekt arbeitet, muss eine Nachrichtenverarbeitungsprozedur zwischengeschaltet werden, die die für die Scanner-Schnittstelle bestimmten Nachrichten aus dem Nachrichtenstrom "herausfischt". Dazu müssen die Nachrichten der Prozedur TWAINIsTwainMessage zur Verarbeitung angeboten werden.

Unbeaufsichtigtes Scannen: Scannen ohne Benutzerdialog

Die Funktion TWAINAquireExt erlaubt das Scannnen, ohne zuvor das Benutzerinterface des Scanners anzuzeigen. Mit den Funktionen TWAINSetResolution und TWAINSetRect können Sie zuvor die Auflösung und den zu scannenden Papierabschnitt festlegen. Die Funktion TWAINCallDS erlaubt weitergehende Einstellungen der Scanparameter, setzt aber weitergehende Informationen über die TWAIN-Schnittstelle voraus.

Probleme mit TWAIN - Implementierungen

Scan-Ergebnis übergeben

Nach einem erfolgreichen Scan-Vorgang wird das gescannte Bild mit der Nachricht UWM_TWAINIMAGERECEIVED an die Applikation übergeben. Dabei enthält der wParam der Nachricht einen Speicher-Block im CF_DIB-Datenformat.

Probleme mit TWAIN - Implementierungen

Funktion TWAINInitialize

Funktion TWAINAquireExt

-


Valid HTML 4.01!