Directory Contents Search << >>

Leonardo: Funktion DIBDetectBarCode
Achtung! Diese Seite ist Teil der noch unvollständigen Dokumentation der Alpha-Version von DaVinci 4.
Die Funktion DIBDetectBarCode durchsucht die einheitenunabhängige Bitmap-Grafik hDIB nach Strichcodes.
|
BOOL WINAPI DIBDetectBarCode( |
||
|
HDIB |
hDIB, |
|
|
BARDETECTEDPROC |
fnProc, |
|
|
LPARAM |
lParam, |
|
|
LPSTR |
szBarCodeList, |
|
|
UINT |
cchBarCodeList, |
|
|
DWORD |
dwBarCodeTypes, |
|
|
DWORD |
dwReserved): |
|
hDIB |
HDIB |
Handle der Bitmap, die nach darin enthaltenen Strichcodes durchsucht werden soll, |
|
fnProc |
BARDETECTPROC |
anwendungsdefinierte Callback-Funktion die nach dem durchsuchen jeder Zeile sowie beim erfolgreichen erkennen eines Strichcodes aufgerufen werden soll. NULL wenn die Anwendung keine Callback-Funktion benutzt, der Strichcode kann in szBarCodeList zurückgegeben werden, |
|
lParam |
LPARAM |
anwendungsdefinierter 32-Bit Wert der bei Aufruf von fnProc an die Callback-Funktion weitergereicht wird, |
|
szBarCodeList |
LPSTR |
Zeiger auf ein Array von Zeichen das bei der Rückkehr die Liste der erkannten Strichcodes enthalten soll. Die Strichcodes sind als Folge von nullterminierten Strings abgelegt, wobei auf den letzten erkannten Strichcode zwei Nullbytes als Endekennzeichen folgen. Der Parameter darf NULL sein, wenn die Anwendung mit Callback-Funktion im Parameter fnProc arbeitet, |
|
cchBarCodeList |
UINT |
Größe des Arrays von Zeichen auf das szBarCodeList zeigt, |
|
dwBarCodeTypes |
DWORD |
Angaben zu den zu durchsuchenden Strichcode-Arten: |
|
BARCODE_TYPE_39 sucht nach 3-aus-9 Strichcodes |
||
|
BARCODE_TYPE_25 sucht nach 2-aus-5 interleaved Strichcodes |
||
|
BARCODE_TYPE_EAN13 sucht nach EAN 13 Strichcodes |
||
|
BARCODE_TYPE_EAN8 sucht nach EAN 8 Strichcodes |
||
|
BARCODE_TYPE_EAN5 sucht nach EAN5 AddOn-Codes zu EAN13 Strichcodes |
||
|
BARCODE_TYPE_EAN2 sucht nach EAN2 AddOn-Codes zu EAN13 Strichcodes |
||
|
BARCODE_DIR_HORZ sucht in horizontaler Richtung |
||
|
BARCODE_DIR_VERT sucht in vertikaler Richtung |
||
|
BARCODE_ONCE übergibt jeden gefundenen Code nur einmal an den Callback, auch wenn er mehrfach in verschiedenen Zeilen/Spalten der DIB erkannt wurde, |
||
|
BARCODE_ALL sucht nach allen bekannten Strichcodearten in allen Richtungen. |
||
|
Rückgabewert |
||
|
Der Rückgabewert ist TRUE wenn mindestens ein Strichcode erkannt wurde, sonst ist er FALSE. |
||
|
Callback-Funktion |
||
|
BOOL CALLBACK BARDETECTEDPROC( |
||
|
UINT |
uMsg, |
|
|
int |
iCurrentPos, |
|
|
LPCSTR |
pszBarCode, |
|
|
DWORD |
dwBarCodeType, |
|
|
LPARAM |
lParam, |
|
|
DWORD |
dummy); |
|
uMsg |
UINT |
gibt den Grund für den Aufruf der Callback-Funktion an. |
|
MSG_BARDETECT_PEEK eine Zeile oder Spalte wurde abgearbeitet und die Anwendung hat nun Gelegenheit, Benutzereingaben zu verarbeiten oder einen Fortschrittsbalken zu pflegen, |
||
|
MSG_BARDETECT_FOUND es wurde ein Strichcode gefunden. Der Parameter pszBarCode zeigt auf den decodierten Code, |
||
|
iCurrentPos |
int |
aktuelle Y oder X-Position beim Suchen, |
|
pszBarCode |
LPCSTR |
Zeiger auf den gefundenen Strichcode, |
|
dwBarCodeType |
DWORD |
gibt den Typ des erkannten Strichcodes an. Es können mehrere Schalter aus der BARCODE_xxxx Liste kombiniert sein, |
|
lParam |
LPARAM |
der beim Aufruf von DIBDetectBarCode im Parameter lParam angegebene 32-Bit Wert, |
|
dummy |
DWORD |
reserviert zur zukünftigen Definition. |
|
Anmerkungen |
||
|
Die Funktion sucht Strichcodes immer vorwärts und rückwärts, d.h. beim horizontalen Suchen wird zugleich von links nach rechts und von rechts nach links gesucht. |
||
|
EAN-Strichcodes werden nur an die Anwendung übergeben, wenn der genormte Prüfsummenwert stimmt. Bei 3-aus-9 und 2-aus-5 Codes ist eine Prüfsumme nicht zwingend vorgeschrieben, die Anwendung ist daher selbst für ihr Prüfsummenverfahren verantwortlich. |
||
|
Es können mehrere Strichcodes neben- und übereinander in einer Bitmap verarbeitet werden. Es muß ausreichend weißer Platz zwischen den Strichcodes sein. |
||
|
Wird derselbe Strichcode mehrfach erkannt (das ist meist so), so wird er nur einmal in das Feld szBarCodeList eingetragen. Die Callback-Funktion im Parameter fnProc wird dagegen für jeden Erkennungsvorgang aufgerufen, es Sei denn, das Flag BARCODE_ONCE wurde gesetzt. |
||
|
Die Suche erfolgt von oben nach unten und von links nach rechts. Erkannte Strichcodes werden in dieser Reihenfolge an die Callback-Funktion übergeben und in das Array eingetragen. |
||
|
Es kann notwendig sein, daß die Anwendung zur gründlichen Suche nach Strichcodes gedrehte Varianten der DIB mit der Funktion DIBRotate erstellt und ebenfalls auf Strichcodes prüft. |
||
|
Die Suche nach Strichcodes ist ein relativ langsamer Vorgang. Falls die Anwendung die ungefähre Position des Strichcodes im Voraus kennt, kann sie mit der Funktion StretchDIB den interessierenden Teil der DIB herauskopieren, um die Verarbeitung zu beschleunigen. |
||
|
Die Funktion verwendet zur Unterscheidung zwischen Strichen und weißen Feldern nur den Grünanteil der DIB. |
||
|
Es muß darauf geachtet werden, daß als Grundlage des Erkennungsvorganges keine gerasterten DIB benutzt wird. Manche Scanner unterstützen eine Halftone Einstellung, auf diese sollte verzichtet werden. Die Übergang von Farbbildern an die Funktion führt nicht zu einer Verringerung der Arbeitsgeschwindigkeit. |
||
|
Für weitere Informationen zu Strichcodes und für Software zum Erstellen von Strichcodes beachten Sie bitte unser Produkt BarVision |
||
|
Anwendungsbeispiele |
||
|
Die Funktion kann z.B. verwendet werden, um im Faxeingang entsprechend mit Strichcodes markierte Formulare automatisch zu erkennen. |
||