Fingerscan interface in Progress 9.1A

Sancho

New Member
Hi,

Has anyone implemented an interface between digitalpersona and Progress 9.1A? or can anyone point me to a site where I can get info on how to compare stored fingerscan template against featureset? What data type is being used?

I have a code here but it's not working.

Sanch

Event: OCX.Oncomplete of DPFPVerificationControl

DEFINE INPUT PARAMETER p-pFeatureSet AS COM-HANDLE NO-UNDO.
DEFINE INPUT PARAMETER p-pStatus AS COM-HANDLE NO-UNDO.
DEFINE VAR v_comverify AS COM-HANDLE NO-UNDO.
DEFINE VAR v_comresult AS COM-HANDLE NO-UNDO.
DEFINE VAR v_comtemplate AS COM-HANDLE NO-UNDO.
DEF VAR v_result AS LOGICAL NO-UNDO.
FIND FIRST tfinger WHERE tfinger.emp_addr = f-empid:SCREEN-VALUE
IN FRAME {&FRAME-NAME} NO-LOCK NO-ERROR.

CREATE "DPFPEngX.DPFPVerification" v_comverify.
CREATE "DPFPEngX.DPFPVerificationResult" v_comresult.
v_comverify:verify(p-pFeatureSet,tfinger.tmplt2). /* tfinger.tmplts2 data type is RAW */

v_result = v_comresult:verified.
MESSAGE v_result VIEW-AS ALERT-BOX.
RELEASE OBJECT v_comverify.
RELEASE OBJECT v_comresult.
 

Sancho

New Member
This has been resolved.... I was able to resolve it using combination of MEMPTR and RAW data types.

The Automated Objects I used is from Digital Persona SDK 1.4.
 

Sancho

New Member
Re: Fingerscan interface in Progress 9.1A (Sample Code)

Sample Codes: (You can use Progress database instead of file.)

/* ------------ Enrollment ---------- */

PROCEDURE CtrlFrame.DPFPEnrollmentControl.OnEnroll .
/*-------------------------------------------------------------------
Purpose: enroll fingerprint and store in a binary file for later use.
Parameters: Required for OCX.
lFingerMask
pTemplate
pStatus
Notes:
-------------------------------------------------------------------*/
DEFINE INPUT PARAMETER p-lFingerMask AS INTEGER NO-UNDO.
DEFINE INPUT PARAMETER p-pTemplate AS COM-HANDLE NO-UNDO.
DEFINE INPUT PARAMETER p-pStatus AS COM-HANDLE NO-UNDO.
DEF VAR v_fname AS CHAR NO-UNDO.
DEF VAR v_memptr AS MEMPTR NO-UNDO.
SET-SIZE(v_memptr) = 0.
v_fname = "w:\fpt\" + f-empid:SCREEN-VALUE IN FRAME {&FRAME-NAME} + ".fpt".
v_memptr = p-ptemplate:SERIALIZE().
OUTPUT TO VALUE(v_fname) NO-MAP NO-CONVERT BINARY.
EXPORT v_memptr.
OUTPUT CLOSE.
END.
END PROCEDURE.


/* ------------ Verification ---------- */
PROCEDURE CtrlFrame-2.DPFPVerificationControl.OnComplete .
/*-------------------------------------------------------------------
Purpose: get feature set, retrieve fingerprint template from file and compare.
Parameters: Required for OCX.
pFeatureSet
pStatus
Notes:
--------------------------------------------------------------------*/
DEFINE INPUT PARAMETER p-pFeatureSet AS COM-HANDLE NO-UNDO.
DEFINE INPUT PARAMETER p-pStatus AS COM-HANDLE NO-UNDO.
DEFINE VAR chtemplate AS COM-HANDLE NO-UNDO.
DEFINE VAR chverification AS COM-HANDLE NO-UNDO.
DEFINE VAR chresult AS COM-HANDLE NO-UNDO.
DEFINE VAR v_result AS LOGICAL NO-UNDO.
DEFINE VAR v_memptr AS MEMPTR NO-UNDO.
DEFINE VAR v_raw AS RAW NO-UNDO.
DEFINE VAR v_fname AS CHAR NO-UNDO.
v_gok = FALSE.
IF f-empid:SCREEN-VALUE IN FRAME {&FRAME-NAME} = "" THEN DO:
MESSAGE "Please enter Employee ID." VIEW-AS ALERT-BOX INFO BUTTON OK.
RETURN NO-APPLY.
END.
v_fname = "w:\fpt\" + f-empid:SCREEN-VALUE IN FRAME {&FRAME-NAME} + ".fpt".
IF SEARCH(v_fname) = ? THEN DO:
MESSAGE "Fingerprint is not enrolled." VIEW-AS ALERT-BOX ERROR BUTTON OK.
RETURN NO-APPLY.
END.
CREATE "DPFPShrx.DPFPTemplate" chtemplate.
CREATE "DPFPEngx.DPFPVerification" chverification.
CREATE "DPFPEngx.DPFPVerification" chresult.
v_fname = "w:\fpt\" + f-empid:SCREEN-VALUE IN FRAME {&FRAME-NAME} + ".fpt".
FILE-INFO:FILE-NAME = v_fname.
SET-SIZE(v_memptr) = FILE-INFO:FILE-SIZE.
INPUT FROM VALUE(v_fname) BINARY NO-CONVERT.
IMPORT v_memptr.
INPUT CLOSE.
v_raw = v_memptr.
chtemplate:deserialize(v_raw).
chresult = chverification:verify(p-pFeatureSet,chtemplate).
IF chresult:verified THEN DO:
v_gok = TRUE.
SET-SIZE(v_memptr) = 0.
RELEASE OBJECT chtemplate.
RELEASE OBJECT chverification.
RELEASE OBJECT chresult.
END.
ELSE DO:
v_gok = FALSE.
MESSAGE "Fingerprint does not match. Please touch scanner again." VIEW-AS ALERT-BOX ERROR BUTTON OK.
END.
END PROCEDURE.
 

Jantoniopm

New Member
Hi, Sancho
You're welcome @ casper!;)

I am using "Progress 8.3b" and I can not make it work the DigitalPersona library with your example, although I had to change the variable memptr v_memptr to character by no to check me error, you know if your example works on this version? Cheers ...!
 
Top