Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Barcode, DataMatrix mit Webcam und DLL (https://www.delphipraxis.net/96437-barcode-datamatrix-mit-webcam-und-dll.html)

hedie 24. Jul 2007 15:47


Barcode, DataMatrix mit Webcam und DLL
 
Hallo

Ich wollte schon lange mal mittels Webcam einen Barcode einscannen.
Ich habe dazu auch schon einige freeware programme gefunden, jedoch konnten die einen nur EAN8 und EAN13 oder nur EAN8
Oder sie gaben keinen String aus.

Nun dachte ich, ich mache mir selbst ein Programm.
Ich weiss das das einscannen mittels Webcam nicht allzu leicht sein wird, jedoch habe ich ca 4 Woche Zeit :D (Ferien)

Ich habe bei der suche nach den Programmen ein paarmal DLLs gefunden die anscheinend aus Bildern Den Barcode und auch DataMatrix erkennen können
wie zb Diese DLL Hier jedoch kann diese jetzt nur 6 Stellige Code 39

Das hier ist zb ein DataMatrix HIER

Ich dachte, dass ich einfach mitt der Webcam ein Bild erstelle bzw. viele hintereinander, und diese dann überprüfen lasse von der DLL

Eigentlich wollte ich die DataMatrix benutzen oder noch besser MicroPDF

Was haltet ihr davon?

Liebe grüsse
Claudio

hedie 25. Jul 2007 17:32

Re: Barcode, DataMatrix mit Webcam und DLL
 
So....

Ich hab diese Seite hier gefunden guckst du ? :D

Da kann man sich ein SDK downloaden, mit dem man alle möglichen barcodes aus Bitmaps lesen kann.


So es hat zwar beispiele für Delphi aber nicht die die ich brauche.
Der Code den ich brauche, gibts nur in C
deshalb wollte ich fragen, ob ihr mir helfen könntet den zu übersetzen


Hier der C Code aus dem Beispiel
Code:
  myBarcode.iBC_Type = BC_DATAMATRIX;
  myBarcode.iBC_Length = 0;
  myBarcode.iBC_Checksum = BC_NONE;
  myBarcode.iBC_Orientation = BC_0 | BC_90 | BC_180 | BC_270;
  myBarcode.iBC_ReadMultiple = BC_MULTI;
  myBarcode.iBC_LightMargin = DM_DEFAULT_LIGHT_MARGIN;
  myBarcode.iBC_ScanDistance = DM_DEFAULT_SEARCH_DISTANCE;
  myBarcode.iBC_ScanDistBarcode = 10;
  myBarcode.iBC_Percent = BC_PERCENT;
  myBarcode.iBC_MaxHeight = DM_DEFAULT_MAX_HEIGHT;
  myBarcode.iBC_MinHeight = DM_DEFAULT_MIN_HEIGHT;
  myBarcode.iBC_MaxNoVal = BC_MAX_NO_VAL;
  myBarcode.iBC_Tolerance = DM_DEFAULT_TOLERANCE;
  myBarcode.iBC_StartX = 0;
  myBarcode.iBC_StartY = 0;
  myBarcode.iBC_SizeX = 0;
  myBarcode.iBC_SizeY = 0;
  myBarcode.iLaengeVon = 0;
  myBarcode.iLaengeBis = 0;
So sieht der original Delphi Code aus, welcher allerdings nur Strichcodes erkennt und keine DataMatrix oder PDF417

Delphi-Quellcode:
  myBarcode.iBC_Type := BC_ALL;
  myBarcode.iBC_Length := 0;
  myBarcode.iBC_Checksum := BC_CHECKNONE;
  myBarcode.iBC_Orientation := BC_0 or BC_90 or BC_180 or BC_270;
  myBarcode.iBC_ReadMultiple := BC_MULTI;
  myBarcode.iBC_LightMargin := BC_LIGHTMARGIN;
  myBarcode.iBC_ScanDistance := BC_SCANDISTANCE;
  myBarcode.iBC_Percent := BC_PERCENT;
  myBarcode.iBC_ScanDistBarcode := 1;
  myBarcode.iBC_MaxHeight := 0;
  myBarcode.iBC_MinHeight := 0;
  myBarcode.iBC_MaxNoVal := BC_MAXNOVAL;
  myBarcode.iBC_Tolerance := BC_TOLERANCE;
  myBarcode.iBC_StartX := 0;
  myBarcode.iBC_StartY := 0;
  myBarcode.iBC_SizeX := 0;
  myBarcode.iBC_SizeY := 0;
  myBarcode.iLaengeVon := 4;
  myBarcode.iLaengeBis := 100;
Ich hab dan mal alles so geändert:

Delphi-Quellcode:
  myBarcode.iBC_Type := BC_DATAMATRIX;
  myBarcode.iBC_Length := 0;
  myBarcode.iBC_Checksum := BC_CHECKNONE;
  myBarcode.iBC_Orientation := BC_0 or BC_90 or BC_180 or BC_270;
  myBarcode.iBC_ReadMultiple := BC_MULTI;
  myBarcode.iBC_LightMargin := DM_DEFAULT_LIGHT_MARGIN;
  myBarcode.iBC_ScanDistance := DM_DEFAULT_SEARCH_DISTANCE;
  myBarcode.iBC_Percent := BC_PERCENT;
  myBarcode.iBC_ScanDistBarcode := 10;
  myBarcode.iBC_MaxHeight := DM_DEFAULT_MAX_HEIGHT;
  myBarcode.iBC_MinHeight := DM_DEFAULT_MIN_HEIGHT;
  myBarcode.iBC_MaxNoVal := BC_MAXNOVAL;
  myBarcode.iBC_Tolerance := BC_TOLERANCE;
  myBarcode.iBC_StartX := 0;
  myBarcode.iBC_StartY := 0;
  myBarcode.iBC_SizeX := 0;
  myBarcode.iBC_SizeY := 0;
  myBarcode.iLaengeVon := 0;
  myBarcode.iLaengeBis := 0;
Jedoch kommt dann beim ausführen des Codes die Meldung

Invalid floating point Oparation


Mit dem Code für nur Strichcodes hat die erkennung einwandfrei geklappt

ich hoffe ihr könnt mir helfen


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz