F_VN_ReadDataMatrixCode
Detect and interpret a data matrix code (ECC200) within the provided image.
Can return partial results when canceled by Watchdog.
Syntax
Definition:
FUNCTION F_VN_ReadDataMatrixCode : HRESULT
VAR_INPUT
ipSrcImage : ITcVnImage;
ipDecodedData : Reference To ITcVnContainer;
hrPrev : HRESULT;
END_VAR
Inputs
Name |
Type |
Description |
---|---|---|
ipSrcImage |
Source image (USINT elements, 1 or 3 channels) | |
ipDecodedData |
Reference To ITcVnContainer |
Returns the decoded code (ContainerType_Vector_String_SINT) |
hrPrev |
HRESULT indicating the result of previous operations (If SUCCEEDED(hrPrev) equals false, no operation is executed.) |
Weiterführende Informationen
Der Data Matrix Barcode nach IEC 16022 ist ein 2D-Code, der es ermöglicht, viele Daten auf kleinstem Raum zu speichern. Dadurch wird dieser oft zur Bauteil- und Produktmarkierung verwendet.
Die Funktion F_VN_ReadDataMatrixCode kann nur ECC 200 Codetypen im Bild erkennen und dekodieren. Dabei wird von einem Code pro Bild ausgegangen. Sollen mehrere Data Matrix Codes in einem Bild erkannt und dekodiert werden ist die Funktion F_VN_ReadDataMatrixCodeExp zu verwenden.
Data Matrix Code Aufbau
Der Data Matrix Code setzt sich aus Rechtecken bzw. Punkten zusammen, aus denen sich ein quadratisches oder rechteckiges Symbol zusammensetzt, das sich wiederum in drei Bereiche aufteilen lässt:
- Finder Pattern
Das durchgezogene L (Solid-Line Locator) dient zur Auffindung und Ausrichtung des Codes, während sich aus den abwechselnd hellen und dunklen Zellen (Pattern-Line Locator) die Zellgröße und Zellanordnung bestimmen lässt. - Datenbereich
Umrandet vom Finder Pattern befindet sich der Datenbereich. - Ruhezone
Die Ruhezone ist ein mind. 1,5 Zellen breiter Bereich um das Finder Pattern herum in der Hintergrundfarbe des Codes.
Störungen / Beschädigungen im Finder Pattern oder in der Ruhezone können eine Detektion des Codes verhindern.
Fehlerkorrektur
Die Data Matrix Code Version ECC 200 (ECC = Error Correction Code) hat sich aufgrund der besseren Fehlerkorrektur durchgesetzt. Neben den eigentlichen Daten sind diese redundant entsprechend des Reed-Solomon-Codes codiert im Code enthalten. Data Matrix Codes dieser Version können von der Funktion dekodiert werden und bei Beschädigung kann eine Fehlerkorrektur durchgeführt werden.
Codesuche
Die Funktion F_VN_ReadDataMatrixCode sucht ausgehend von der mittleren Bildzeile nach einem Data Matrix Code im Bild.
Daten aus Container lesen
Wurde der Code erfolgreich gefunden und decodiert, wird der Codeinhalt im Container ipDecodedData
zurückgegeben und kann über die Funktion F_VN_ExportSubContainer_String in einen String exportiert werden.
hr := F_VN_ExportSubContainer_String( ipDecodedData, 0, sText, nMaxLength, hr);
HRESULT
Wie alle TwinCAT Vision API-Funktionen gibt auch diese Funktion ein HRESULT zurück, um anzugeben, ob die Ausführung erfolgreich war oder fehlgeschlagen ist. Im Erfolgsfall kann bei der nachfolgenden Ergebnisbehandlung zwischen folgenden Success-Codes unterschieden werden. Um zwischen diesen Fällen zu unterscheiden, kann die HRESULT
-Variable direkt mit S_OK
oder S_FALSE
verglichen werden.
Code | Name | Beschreibung |
---|---|---|
16#000 | S_OK | Die Funktion wurde erfolgreich ausgeführt. |
16#001 | S_FALSE | Die Funktion wurde erfolgreich ausgeführt. |
16#256 | S_WATCHDOGTIMEOUT | Die Funktion wurde vom Watchdog abgebrochen. |
Beispiele
Verwandte Funktionen
Required License
TC3 Vision Code Reading
System Requirements
Development environment | Target platform | PLC libraries to include |
---|---|---|
TwinCAT V3.1.4024.59 or later | PC or CX (x64) with PL50, e.g. Intel 4-core Atom CPU | Tc3_Vision |