Ergebnisauswertung beim Code Reading

In diesem Beispiel werden

Erläuterung

Eine genaue Erläuterung der Return-Codes für Code Reading Funktionen finden Sie im Übersichtskapitel Code Reading.

Variablen

hr                        :   HRESULT;

// Images
ipImageIn                 :   ITcVnImage;
ipImageInDisp             :   ITcVnDisplayableImage;
ipImageRes                :   ITcVnImage;
ipImageResDisp            :   ITcVnDisplayableImage;

// Barcode
ipCodeDecodedList         :   ITcVnContainer;
ipCodeContourList         :   ITcVnContainer;
sCodeAsString             :   STRING(255);

// Watchdog
hrWD                      :   HRESULT;
tStop                     :   DINT := 50000;
tRest                     :   DINT;

// Color
aColorGreen               :   TcVnVector4_LREAL := [0, 255, 0];

// Return code
nReturnCode               :   DWORD;
sReturnCode               :   STRING;
sResultText               :   STRING;

Code

// Execute the Barcode Reading Function with EAN13 selected monitored by the Watchdog-Function
hrWD := F_VN_StartRelWatchdog(tStop, S_OK);
    hr := F_VN_ReadBarcode(
        ipSrcImage      :=  ipImageIn,
        ipDecodedData   :=  ipCodeDecodedList,
        eBarcodeType    :=  ETcVnBarcodeType.TCVN_BT_EAN13,
        hrPrev          :=  hr
    );
hrWD := F_VN_StopWatchdog(hrWD, tRest => tRest);

// Handle return-code
IF hr = S_OK THEN
    // Prepare code result in string
    hr := F_VN_ExportSubContainer_String(ipCodeDecodedList, 0, sCodeAsString, 255, hr);
    sResultText := CONCAT('Code: ', sCodeAsString);
ELSE
    // Check for succeeded return codes or add specific error handling
    CASE hr OF
        S_FALSE:
            sResultText := 'No code found...';

        S_WATCHDOG_TIMEOUT:
            sResultText := 'Cancelled by watchdog...';
    ELSE
        // Extract error-code from HRESULT & react accordingly
        nReturnCode := DINT_TO_DWORD(hr) AND 16#FFF;

        sReturnCode := DWORD_TO_HEXSTR(nReturnCode, 3, FALSE);
        sResultText := CONCAT('Returncode ', sReturnCode);
    END_CASE
END_IF

// Draw result image
hr := F_VN_PutTextExp(sResultText, ipImageRes, 50, 100, ETcVnFontType.TCVN_FT_HERSHEY_PLAIN, 4, aColorGreen, 3, TCVN_LT_4_CONNECTED, FALSE, S_OK);
hr := F_VN_TransformIntoDisplayableImage(ipImageRes, ipImageResDisp, hr);

Hinweis

hr reservieren

Achten Sie darauf, die Variable hr zwischen dem Aufruf der Code Reading Funktion und der Auswertung nicht als Rückgabewert einer anderen Funktion zu benutzen.

Ergebnisse

Wenn wie erwartet ein Code gefunden wird, ist hr = S_OK und das Ergebnis kann ausgegeben werden.

Ergebnisauswertung beim Code Reading 1:

Wenn der erwartete Code nicht gefunden werden kann, entspricht der Return-Code S_FALSE und bei Abbruch durch einen Watchdog ist er 16#256. Eine entsprechende Meldung kann ausgegeben werden.

Ergebnisauswertung beim Code Reading 2:     Ergebnisauswertung beim Code Reading 3:

Wenn die Funktion nicht korrekt ausgeführt wird, kann der Fehler-Code ausgegeben werden. Dies kommt im gegebenen Beispiel nicht vor und wird bei Code Reading Funktionen nur durch falsche Benutzung hervorgerufen.

Ähnliche Beispiele