Using External Class

307 views
Skip to first unread message

bar...@myworkplace.com.au

unread,
Jun 9, 2009, 8:01:44 AM6/9/09
to openroa...@googlegroups.com
Hi All,
I am using an external class to integrate to clock called SAGEM. I have registered the DLL and it exposes the Class Library to the external class. The DLL is designed in such a way that one can access the interface and not the classes. When I call one of the function it give an error saying, "The method 'runnomatch' for source ActiveMorphoKitMKAcquisition.2 returned an error code of 80020009 and the error message 'Cannot initialize acquisition device..' ". I tested with .net and it works fine. Does the INGRES external class allow creating an object for an interface? I have given the coding that I used to call the method.
The interface for SAGEM was written with C++. It would be a great help if anyone can assist on this.

objAcquistion = extc_Sagem_Enroll!MKAcquisition;
objAcquistion.RunNoMatch(image=objImage,pks=BYREF(objMinutiae));

Regards
Barathy

Joseph C. Kronk

unread,
Jun 9, 2009, 12:15:23 PM6/9/09
to openroa...@googlegroups.com
Barathy,

This error code 80020009 indicated that an "exception occurred". Please
open a service desk ticket so that I can arrange for more detailed
analysis of this problem. Ingres has a clock from your company in house
that was used to resolve a problem that was reported in the past. I
don't know if this is a different device or the same one that we have in
house. It is branded as a "MyWorkPlace Solutions A11" device that does
fingerprint recognition and has a small screen with a numeric keypad
along with a few other buttons such as OK, ESC, Menu, ^, and V. I don't
know if this is the same SAGEM clock.

Anyway unless someone has a quick solution for you I think that your
other solution is to open an issue with Ingres support.

Thanks,
-Joe

Paul White

unread,
Jun 9, 2009, 6:52:10 PM6/9/09
to openroa...@googlegroups.com
Hi Barathy,

It would be helpful to see the .net code you used which you know works.
Please feel free to post the sample here.

Can you tell us the data types of the parameters and function return value?
(objImage , objMinutiae) are they simple scalars? eg varchars, integers,
floats.

Does the wrapper code have any other function which can be called to verify
it is working ok?



What commands do you use to register the classes? regasm, gacutil or
regsvr32?

I presume you are testing OpenROAD on the same machine as you have tested
the .net code so all things are equal.

What version / patch operating system are you testing on? In the past I have
found a bug where the GAC gets confused with multiple entries for the same
libraries. OpenROAD doesn't deal well with this situation.


Barathy, there are some good examples posted on the list over the past few
years. Navigate to here:

http://groups.google.com/group/openroad-users

then search for net. Or click on this link

http://groups.google.com/group/openroad-users/search?group=openroad-users&q=
net

regards

Paul

bar...@myworkplace.com.au

unread,
Jun 10, 2009, 4:00:22 AM6/10/09
to openroa...@googlegroups.com
Hi Joe,
Thanks for the help. SAGEM is a French company and it?s quite different from what we are using at MyWorkplace. I will open a ticket on the issue site. It will be great if you can help us.

Thanks
Barathy

bar...@myworkplace.com.au

unread,
Jun 10, 2009, 4:13:28 AM6/10/09
to openroa...@googlegroups.com
Hi Paul,
Please find the OR Coding and the .net coding. I am runing OR and.net on the the same machine.

Thanks
Barathy

THis is the Open Road Code

ON CLICK acquisition=
DECLARE
objMinutiae = extc_Sagem_Enroll!MKMinutiae;
objImage = extc_Sagem_Enroll!MKImage;
objAcquistion = extc_Sagem_Enroll!MKAcquisition;
Lu_clock = uc_clocks;
{
objImage.Create(SizeY=416, SizeX=416,numberofBands= 1);
objAcquistion.selectDriver = 0;

//objAcquistion.WindowCaption = 'MyWorkplace Time Attendance';
objAcquistion.FingerCaption = 'Place finger on the scanner for acquesition';
objAcquistion.ShowQualityBar = 1;
objAcquistion.UseConsolidation = 1;
objAcquistion.fingerDetection = 1;
objAcquistion.qualityThreshold = 75;
objAcquistion.NbGoodQualityToAcceptFinger = 3;

objAcquistion.RunNoMatch(image=objImage,pks=BYREF(objMinutiae));

}


This is the .net code

ActiveMKit_Enroll.MKMinutiae objMinutiae;
ActiveMKit_Enroll.MKImage objImage;
ActiveMKit_Enroll.MKAcquisition objAcquistion;

objMinutiae = new ActiveMKit_Enroll.MKMinutiae();
objImage = new ActiveMKit_Enroll.MKImage();
objAcquistion = new ActiveMKit_Enroll.MKAcquisition();
objMinutiae.
objImage.Create(416, 416, 1);
objAcquistion.selectDriver = 0;

objAcquistion.WindowCaption = "MyWorkplace Time Attendance";
objAcquistion.FingerCaption = " Pace finger on the scanner for acquesition";
objAcquistion.ShowQualityBar = 1;
objAcquistion.UseConsolidation = 1;
objAcquistion.fingerDetection = 1;

objAcquistion.qualityThreshold = 75;
objAcquistion.NbGoodQualityToAcceptFinger = 3;

objAcquistion.RunNoMatch(objImage, objMinutiae);


----- Original Message -----
From: Paul White [mailto:shift7s...@gmail.com]
To: openroa...@googlegroups.com
Sent: Wed, 10 Jun 2009 08:52:10 +1000
Subject: [openroad-users] Re: Using External Class


Hi Barathy,

It would be helpful to see the .net code you used which you know works.
Please feel free to post the sample here.

Can you tell us the data types of the parameters and function return value?
(objImage , objMinutiae) are they simple scalars? eg varchars, integers,
floats.

Does the wrapper code have any other function which can be called to verify
it is working ok?



What commands do you use to register the classes? regasm, gacutil or
regsvr32?

I presume you are testing OpenROAD on the same machine as you have tested
the .net code so all things are equal.

What version / patch operating system are you testing on? In the past I have
found a bug where the GAC gets confused with multiple entries for the same
libraries. OpenROAD doesn't deal well with this situation.


Barathy, there are some good examples posted on the list over the past few
years. Navigate to here:

http://groups.google.com/group/openroad-users

then search for net. Or click on this link

http://groups.google.com/group/openroad-users/search?group=openroad-users&q=
net

regards

Paul

-----Original Message-----
From: openroa...@googlegroups.com
[mailto:openroa...@googlegroups.com] On Behalf Of Joseph C. Kronk

Joseph C. Kronk

unread,
Jun 10, 2009, 5:02:05 PM6/10/09
to openroa...@googlegroups.com
Barathy,

Thanks for the clarification. Opening an issue will consolidate activity
and we puruse the solution to this problem. I will look for it and
update the issue with more information as needed.

Bodo Bergmann

unread,
Jun 10, 2009, 5:18:37 PM6/10/09
to openroa...@googlegroups.com
Hi Barathy,

you can't use named parameters on methods of external classes -
parameters are passed by position (like in 3GL procedure calls),
e.g.:
objImage.Create(SizeY=416, SizeX=416,numberofBands= 1);
should be:
objImage.Create(416, 416, 1);

which is BTW the same as in the .net code.
The same applies to the objAcquistion.RunNoMatch() method invocation.

In addition the .net code seems to contain an unfinished codeline:
objMinutiae.

Not sure how this code can run there at all?

Bodo.

Bodo Bergmann | Sr. Software Engineer | Bodo.B...@ingres.com |
Ingres Germany GmbH | Ohmstr. 12 | 63225 Langen | GERMANY | +49 6103
9881 0


-----Original Message-----
From: openroa...@googlegroups.com
[mailto:openroa...@googlegroups.com] On Behalf Of

Maxime Richez

unread,
Jun 12, 2009, 10:11:22 AM6/12/09
to openroa...@googlegroups.com

Hi everybody,

 

I try to load and save a picture into an ingres database through openroad.

 

- I use the imagefield with the bitmapobject and a bitmap storage table -> everything is ok but i'm thinking about loading picture from another program not in openroad and i've no idea about the bitmap storage table structure and prefixes... (any documentation is welcome)

 

- other solution : using a longbyteobject to save my picture into the database. My problem is how to display this longbyteobject through the bitmap object / imagefield....

I try to interface through a stringobject whith the convertfrombinary procedure : no result

I try to load  through a stringobject whith the loadlong procedure : no result

 

Here's the code :

 

declare

  ret=integer;

  sto=stringobject

enddeclare

begin

 

 

    /* Fetch the blob from the database */

    ret=Lbo.FetchFromDB(query='SELECT Blobfld FROM article_blob WHERE id=1');

    if ret=ER_OK then

         ret = sto.ConvertFromBinary(binary = lbo,format = EF_HEX);

         //ret=sto.loadlong(object=lbo);

      if ret=ER_OK then

          ret=imagefield.loadlong(object=sto);

      endif;

    endif;

end;

 

and the error is : Read (<NULL>): File is not in .BMP format

 

Thanks for help !

 

Maxime Richez

Saluc SA

Bodo Bergmann

unread,
Jun 12, 2009, 10:31:55 AM6/12/09
to openroa...@googlegroups.com

Hi Maxime,

 

You wrote:

i'm thinking about loading picture from another program not in openroad

You can’t directly load the bitmapobject data from the database into an external program.

Load it into an OpenROAD app and use WriteToFile() using a format your external pogram can work with.

 

For your other question:

how to display this longbyteobject through the bitmap object / imagefield

Why aren’t you just load the LongByteObject directly into the BitmapObject?

E.g.:

 

ret=imagefield.loadlong(object=lbo);

 

I think the documentation on LoadLong is not correct.
Perhaps also an FIELD(
imagefield).UpdField(); is required

 

Bodo

 

Bodo Bergmann | Sr. Software Engineer | Bodo.B...@ingres.com | Ingres Germany GmbH | Ohmstr. 12 | 63225 Langen | GERMANY | +49 6103 9881 0

 

 

Yunlong Zhao

unread,
Jun 12, 2009, 10:37:32 AM6/12/09
to openroa...@googlegroups.com

Hi Maxime,

 

Don’t use sto.ConvertFromBinary() to convert your lbo to sto, it will mess up the bitmap. Try ret = imagefield.loadlong(object=lbo) instead.

 

Yunlong

 


From: openroa...@googlegroups.com [mailto:openroa...@googlegroups.com] On Behalf Of Maxime Richez


Sent: Friday, June 12, 2009 8:11 AM
To: openroa...@googlegroups.com

Maxime Richez

unread,
Jun 15, 2009, 3:20:10 AM6/15/09
to openroa...@googlegroups.com

To Bodo and Yunlong,

 

Thanks for your answer. I already tried imagefield.loadlong but the imagefield displayed nothing.

A field(imagefield).updfield is needed to refresh the display ! Now it works !

Thanks for your help !

 

So here’s the correct code :

 

     /* Fetch the blob from the database  lbo=LONGBYTEOBJECT */

    ret=Lbo.FetchFromDB(query='SELECT Blobfld FROM article_blob WHERE id_article=1 ');

    if ret=ER_OK then

          ret=imagefield.loadlong(object=lbo);

          if ret=ER_OK then

                 field(imagefield).updfield();

          endif;

    endif;


De : openroa...@googlegroups.com [mailto:openroa...@googlegroups.com] De la part de Yunlong Zhao
Envoyé : vendredi 12 juin 2009 16:38
À : openroa...@googlegroups.com
Objet : [openroad-users] Re: Bitmap in openroad...


lang=EN-US>



barathi

unread,
Jun 18, 2009, 4:05:42 AM6/18/09
to openroa...@googlegroups.com
Hi Bodo,
Sorry for the delayed reply. I tried calling the function without
using named parameter but still it gives the same error. Its causing a
runtime exception.

Thanks
Barathy

Paul White

unread,
Jun 18, 2009, 4:18:48 AM6/18/09
to openroa...@googlegroups.com
Hi Barathi,
You didn't answer Bodo's comment about the incomplete code.
Can you please repost your working example?


I suspect you are going to have to write a wrapper which deals only with
simple scalars.
Your example seems to be passing an activeX object as a parameter.

barathi

unread,
Jun 18, 2009, 5:42:46 AM6/18/09
to openroa...@googlegroups.com
Sorry I was experimenting with the code and copied without deleting that
particulate line. Below is the full code that runs on .net. Further I tested
with .net 2005 as well it works fine (on a different machine). After running
the code it opens a .exe(window) which allows to capture the thump
impression.

Regards
Barathy

ActiveMKit_Enroll.MKMinutiae objMinutiae;
ActiveMKit_Enroll.MKImage objImage;
ActiveMKit_Enroll.MKAcquisition objAcquistion;

objMinutiae = new ActiveMKit_Enroll.MKMinutiae();
objImage = new ActiveMKit_Enroll.MKImage();
objAcquistion = new ActiveMKit_Enroll.MKAcquisition();

try
{
objImage.Create(416, 416, 1);
objAcquistion.selectDriver = 0;

objAcquistion.WindowCaption = "MyWorkplace Time Attendance";
objAcquistion.FingerCaption = " Pace finger on the scanner
for acquesition";
objAcquistion.ShowQualityBar = 1;
objAcquistion.UseConsolidation = 1;
objAcquistion.fingerDetection = 1;

objAcquistion.qualityThreshold = 75;
objAcquistion.NbGoodQualityToAcceptFinger = 3;


objAcquistion.Run(objImage, objMinutiae, null);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);

Bodo Bergmann

unread,
Jun 19, 2009, 3:45:12 AM6/19/09
to openroa...@googlegroups.com
Hi Barathi,

I assume you also got a COM library for your SAGEM access - you can't
use a .NET library in OpenROAD directly.
Did you get COM examples for the library from SAGEM?
Or did you write your own wrapper library for the .NET library?
Could you post the TypeLib information for the COM library you use
(the one referred to by the "extc_Sagem_Enroll" external class library
in OpenROAD), e.g. from the OleView.exe:
Under "Type Libraries" double-click on your library and copy the content
of the right pane of the ITypeLib Viewer window.

Bodo.

barathi

unread,
Jun 19, 2009, 4:49:29 AM6/19/09
to openroa...@googlegroups.com
HI Bodo,
I am not using .NET library. Even the .NET code I am using the COM
library.
I have attached (the image) the information you asked for, I am not sure if
this is what asked.
external class info.bmp

Bodo Bergmann

unread,
Jun 19, 2009, 5:06:44 AM6/19/09
to openroa...@googlegroups.com
Hi Barathi,

what I mean is the output of OleView.exe (part of VisualStudio)
for the "SAGEM Fingerprint Acquisition and Processing Library 1.7"
This should contain a description of all the classes, methods and
properties of the library.

barathi

unread,
Jun 19, 2009, 5:40:49 AM6/19/09
to openroa...@googlegroups.com
HI Bodo,
Sorry, Hopw this is fine.

// Generated .IDL file (by the OLE/COM Object Viewer)
//
// typelib filename: ActiveMKit_Enrol.dll

[
uuid(33364DC9-14AC-4E6F-88A7-3461A427116F),
version(1.7),
helpstring("SAGEM Fingerprint Acquisition and Processing Library 1.7"),
custom(DE77BA64-517C-11D1-A2DA-0000F8773CE9, 83951780),
custom(DE77BA63-517C-11D1-A2DA-0000F8773CE9, 1152111762)

]
library ActiveMKit_Enroll
{
// TLib : // TLib : OLE Automation :
{00020430-0000-0000-C000-000000000046}
importlib("stdole2.tlb");

// Forward declare all types defined in this typelib
interface IMKAcquisition;
interface IMKImage;
interface IMKMinutiae;
interface IMKCoder;
interface IMKAdvancedCoder;
interface IMKWsq;
interface IMKTemplateConvertor;
interface IMKCBEFF;
interface IMKMinex;

typedef [uuid(3CCA8A5B-2731-4239-9015-8D1A620810E0)]
enum {
NoBiometricTypesGiven = 0,
MultipleBiometricsUsed = 1,
FacialFeatures = 2,
Voice = 4,
Fingerprint = 8,
Iris = 16,
Retina = 32,
HandGeometry = 64,
SignatureDynamics = 128,
KeystrokeDynamics = 256,
LipMovement = 512,
ThermalFaceImage = 1024,
ThermalHandImage = 2048,
Gait = 4096,
BodyOdor = 8192,
DNA = 16384,
EarShape = 32768,
FingerGeometry = 0x00010000,
PalmPrint = 0x00020000,
VeinPattern = 0x00040000,
FootPrint = 0x00080000,
PassWord = 0x80000000
} BiometricTypes;

typedef [uuid(DB2F7B27-D143-418D-98AE-89884DBF763A)]
enum {
NoBiometricSubTypesGiven = 0,
RightHand = 1,
LeftHand = 2,
Thumb = 4,
PointerFinger = 8,
MiddleFinger = 12,
RingFinger = 16,
LittleFinger = 20,
LeftThumb = 6,
LeftPointerFinger = 10,
LeftMiddleFinger = 14,
LeftRingFinger = 18,
LeftLittleFinger = 22,
RightThumb = 5,
RightPointerFinger = 9,
RightMiddleFigner = 13,
RightRingFinger = 17,
RightLittleFinger = 21
} BiometricSubTypes;

typedef [uuid(A8DDB595-9028-41BB-97AA-0F2A53A505F4)]
enum {
RawProcessedLevels = 0,
IntermediateProcessedLevel = 1,
CompleteProcessedLevel = 2,
EncryptedProcessedLevel = 3,
SignedProcessedLevel = 4
} ProcessedLevel;

typedef [uuid(E5E666B8-FACC-4623-B4E4-C84B46ED8F48)]
enum {
VerifyPurpose = 0,
IdentifyPurpose = 1,
EnrollPurpose = 2,
EnrollForVerificationOnlyPurpose = 3,
EnrollForIdentificationOnlyPurpose = 4,
AuditPurpose = 5
} Purposes;

typedef [uuid(D615461F-DA6E-4F50-A6BB-7F25FB025B0D)]
enum {
NoIntegrity = 0,
Integrity = 1
} IntegrityOptions;

typedef [uuid(D8D42039-1D05-4696-8469-FB47D64F0D53)]
enum {
NoEncryption = 0,
Encryption = 1
} EncryptionOptions;

typedef [uuid(7218106D-DFE7-4355-97AF-B50151DEB5F4)]
enum {
QualitySupportedByBDBCreatorButNotSet = 255,
QualityNotSupportedByBDBCreator = 254
} Qualities;

typedef [uuid(5E19F90A-5CCE-46DE-99AC-F845B7AAB1F7)]
enum {
MinexUnkonwnFinger = 0,
MinexRightThumb = 1,
MinexRightIndex = 2,
MinexRightMiddleFinger = 3,
MinexRightRingFinger = 4,
MinexRightLittleFinger = 5,
MinexLeftThumb = 6,
MinexLeftIndexFinger = 7,
MinexLeftMiddleFinger = 8,
MinexLeftRingFinger = 9,
MinexLeftLittleFinger = 10
} MinexFingerPos;

typedef [uuid(EC7A4030-3342-4588-A9E6-A8F43E9CE765)]
enum {
LiveScanPlain = 0,
LiveScanRolled = 1,
NonLiveSanPlain = 2,
NonLiveScanPlain = 3
} MinexImpressionType;

[
uuid(0F7BFDF5-2495-11D6-9FE1-00C04F1F9CD5),
helpstring("MKAcquisition Class")
]
coclass MKAcquisition {
[default] interface IMKAcquisition;
};

[
odl,
uuid(625506C6-0E49-4BDA-902A-5A2D57E65D22),
helpstring("IMKAcquisition Interface"),
dual,
oleautomation
]
interface IMKAcquisition : IDispatch {
[id(0x00000001), helpstring("method Run")]
HRESULT Run(
IMKImage* image,
IMKMinutiae* pks,
IMKMinutiae* refpks);
[id(0x00000002), propget, helpstring("property IPAddress")]
HRESULT IPAddress([out, retval] BSTR* pVal);
[id(0x00000002), propput, helpstring("property IPAddress")]
HRESULT IPAddress([in] BSTR pVal);
[id(0x00000003), propget, helpstring("property qualityThreshold")]
HRESULT qualityThreshold([out, retval] short* pVal);
[id(0x00000003), propput, helpstring("property qualityThreshold")]
HRESULT qualityThreshold([in] short pVal);
[id(0x00000004), propget, helpstring("property matchingThreshold")]
HRESULT matchingThreshold([out, retval] short* pVal);
[id(0x00000004), propput, helpstring("property matchingThreshold")]
HRESULT matchingThreshold([in] short pVal);
[id(0x00000005), propget, helpstring("property qualityScore")]
HRESULT qualityScore([out, retval] short* pVal);
[id(0x00000006), propget, helpstring("property matchingScore")]
HRESULT matchingScore([out, retval] short* pVal);
[id(0x00000007), propget, helpstring("property status")]
HRESULT status([out, retval] short* pVal);
[id(0x00000008), propget, helpstring("property imageSource")]
HRESULT imageSource([out, retval] short* pVal);
[id(0x00000008), propput, helpstring("property imageSource")]
HRESULT imageSource([in] short pVal);
[id(0x00000009), propget, helpstring("property anamorphismX")]
HRESULT anamorphismX([out, retval] single* pVal);
[id(0x00000009), propput, helpstring("property anamorphismX")]
HRESULT anamorphismX([in] single pVal);
[id(0x0000000a), propget, helpstring("property anamorphismY")]
HRESULT anamorphismY([out, retval] single* pVal);
[id(0x0000000a), propput, helpstring("property anamorphismY")]
HRESULT anamorphismY([in] single pVal);
[id(0x0000000b), propget, helpstring("property channel")]
HRESULT channel([out, retval] short* pVal);
[id(0x0000000b), propput, helpstring("property channel")]
HRESULT channel([in] short pVal);
[id(0x0000000c), propget, helpstring("property standard")]
HRESULT standard([out, retval] short* pVal);
[id(0x0000000c), propput, helpstring("property standard")]
HRESULT standard([in] short pVal);
[id(0x0000000d), propget, helpstring("property offsetX")]
HRESULT offsetX([out, retval] short* pVal);
[id(0x0000000d), propput, helpstring("property offsetX")]
HRESULT offsetX([in] short pVal);
[id(0x0000000e), propget, helpstring("property offsetY")]
HRESULT offsetY([out, retval] short* pVal);
[id(0x0000000e), propput, helpstring("property offsetY")]
HRESULT offsetY([in] short pVal);
[id(0x0000000f), propget, helpstring("property contrast")]
HRESULT contrast([out, retval] short* pVal);
[id(0x0000000f), propput, helpstring("property contrast")]
HRESULT contrast([in] short pVal);
[id(0x00000010), propget, helpstring("property brightness")]
HRESULT brightness([out, retval] short* pVal);
[id(0x00000010), propput, helpstring("property brightness")]
HRESULT brightness([in] short pVal);
[id(0x00000011), propget, helpstring("property invertVideo")]
HRESULT invertVideo([out, retval] short* pVal);
[id(0x00000011), propput, helpstring("property invertVideo")]
HRESULT invertVideo([in] short pVal);
[id(0x00000012), propget, helpstring("property differenceImage")]
HRESULT differenceImage([out, retval] short* pVal);
[id(0x00000012), propput, helpstring("property differenceImage")]
HRESULT differenceImage([in] short pVal);
[id(0x00000013), propget, helpstring("property selectDriver")]
HRESULT selectDriver([out, retval] long* pVal);
[id(0x00000013), propput, helpstring("property selectDriver")]
HRESULT selectDriver([in] long pVal);
[id(0x00000014), propget, helpstring("property halfSize")]
HRESULT halfSize([out, retval] short* pVal);
[id(0x00000014), propput, helpstring("property halfSize")]
HRESULT halfSize([in] short pVal);
[id(0x00000015), propget, helpstring("property fingerDetection")]
HRESULT fingerDetection([out, retval] short* pVal);
[id(0x00000015), propput, helpstring("property fingerDetection")]
HRESULT fingerDetection([in] short pVal);
[id(0x00000016), propget, helpstring("property FingerCaption")]
HRESULT FingerCaption([out, retval] BSTR* pVal);
[id(0x00000016), propput, helpstring("property FingerCaption")]
HRESULT FingerCaption([in] BSTR pVal);
[id(0x00000017), propget, helpstring("property OnlyOneMatching")]
HRESULT OnlyOneMatching([out, retval] short* pVal);
[id(0x00000017), propput, helpstring("property OnlyOneMatching")]
HRESULT OnlyOneMatching([in] short pVal);
[id(0x00000018), propget, helpstring("property UseConsolidation")]
HRESULT UseConsolidation([out, retval] short* pVal);
[id(0x00000018), propput, helpstring("property UseConsolidation")]
HRESULT UseConsolidation([in] short pVal);
[id(0x00000019), propget, helpstring("property
MaxQualityInProgressControl")]
HRESULT MaxQualityInProgressControl([out, retval] short* pVal);
[id(0x00000019), propput, helpstring("property
MaxQualityInProgressControl")]
HRESULT MaxQualityInProgressControl([in] short pVal);
[id(0x0000001a), propget, helpstring("property
NbGoodQualityToAcceptFinger")]
HRESULT NbGoodQualityToAcceptFinger([out, retval] short* pVal);
[id(0x0000001a), propput, helpstring("property
NbGoodQualityToAcceptFinger")]
HRESULT NbGoodQualityToAcceptFinger([in] short pVal);
[id(0x0000001b), propget, helpstring("property ShowQualityBar")]
HRESULT ShowQualityBar([out, retval] short* pVal);
[id(0x0000001b), propput, helpstring("property ShowQualityBar")]
HRESULT ShowQualityBar([in] short pVal);
[id(0x0000001c), helpstring("method Authentify")]
HRESULT Authentify(
IMKMinutiae* pks,
IMKMinutiae* refpks,
[out, retval] short* pResult);
[id(0x0000001d), propget, helpstring("property ShowSlider")]
HRESULT ShowSlider([out, retval] short* pVal);
[id(0x0000001d), propput, helpstring("property ShowSlider")]
HRESULT ShowSlider([in] short pVal);
[id(0x0000001e), propget, helpstring("property ClassificationType")]
HRESULT ClassificationType([out, retval] short* pVal);
[id(0x0000001e), propput, helpstring("property ClassificationType")]
HRESULT ClassificationType([in] short pVal);
[id(0x0000001f), propput, helpstring("property WindowCaption")]
HRESULT WindowCaption([in] BSTR rhs);
[id(0x00000020), propget, helpstring("property DetectionMode")]
HRESULT DetectionMode([out, retval] short* pVal);
[id(0x00000020), propput, helpstring("property DetectionMode")]
HRESULT DetectionMode([in] short pVal);
[id(0x00000021), propget, helpstring("property DisplayError")]
HRESULT DisplayError([out, retval] short* pVal);
[id(0x00000021), propput, helpstring("property DisplayError")]
HRESULT DisplayError([in] short pVal);
[id(0x00000022), propget, helpstring("property Language")]
HRESULT Language([out, retval] short* pVal);
[id(0x00000022), propput, helpstring("property Language")]
HRESULT Language([in] short pVal);
[id(0x00000023), helpstring("method RunNoMatch")]
HRESULT RunNoMatch(
IMKImage* image,
IMKMinutiae* pks);
[id(0x00000024), propget, helpstring("property TimeoutAcquisition")]
HRESULT TimeoutAcquisition([out, retval] long* pVal);
[id(0x00000024), propput, helpstring("property TimeoutAcquisition")]
HRESULT TimeoutAcquisition([in] long pVal);
[id(0x00000025), propget, helpstring("property UseJuvenileCoder")]
HRESULT UseJuvenileCoder([out, retval] short* pVal);
[id(0x00000025), propput, helpstring("property UseJuvenileCoder")]
HRESULT UseJuvenileCoder([in] short pVal);
[id(0x00000026), helpstring("method FingerQuality")]
HRESULT FingerQuality(
VARIANT i__minutiae,
short i__fingerId,
short i__imageQuality,
short i__matchingScore,
[out, retval] short* o__quality);
[id(0x00000027), propget, helpstring("property CoderType")]
HRESULT CoderType([out, retval] short* pVal);
[id(0x00000027), propput, helpstring("property CoderType")]
HRESULT CoderType([in] short pVal);
[id(0x00000028), propget, helpstring("property
DisplayMatchingMessage")]
HRESULT DisplayMatchingMessage([out, retval] short* pVal);
[id(0x00000028), propput, helpstring("property
DisplayMatchingMessage")]
HRESULT DisplayMatchingMessage([in] short pVal);
[id(0x00000029), propget, helpstring("property
DisplayQualityMessageBox")]
HRESULT DisplayQualityMessageBox([out, retval] short* pVal);
[id(0x00000029), propput, helpstring("property
DisplayQualityMessageBox")]
HRESULT DisplayQualityMessageBox([in] short pVal);
};

[
odl,
uuid(0DE3A995-9DEE-41D3-AB0E-B4879A2DE7FD),
helpstring("IMKImage Interface"),
dual,
oleautomation
]
interface IMKImage : IDispatch {
[id(0x00000001), helpstring("method Create")]
HRESULT Create(
short sizeX,
short sizeY,
short numberOfBands);
[id(0x00000002), helpstring("method SaveBmp")]
HRESULT SaveBmp(BSTR filename);
[id(0x00000003), propget, helpstring("property sizeX")]
HRESULT sizeX([out, retval] short* pVal);
[id(0x00000004), propget, helpstring("property sizeY")]
HRESULT sizeY([out, retval] short* pVal);
[id(0x00000005), propget, helpstring("property numberOfBands")]
HRESULT numberOfBands([out, retval] short* pVal);
[id(0x00000006), propget, hidden, helpstring("property pixels")]
HRESULT pixels([out, retval] long* pVal);
[id(0x00000007), helpstring("method get_wsq_image")]
HRESULT get_wsq_image([out, retval] VARIANT* pVal);
[id(0x00000008), helpstring("method get_raw_image")]
HRESULT get_raw_image([out, retval] VARIANT* pVal);
[id(0x00000009), helpstring("GrayScale")]
HRESULT Grayscale();
[id(0x0000000a), helpstring("Rotate90")]
HRESULT Rotate90([in] short clockWise);
[id(0x0000000b), helpstring("Flip")]
HRESULT Flip();
[id(0x0000000c), helpstring("SaveFile")]
HRESULT SaveFile(
[in] BSTR filePath,
[in] long imageFormat);
[id(0x0000000d), helpstring("ReadFile")]
HRESULT ReadFile(
[in] BSTR filePath,
[in] long sizeX,
[in] long sizeY,
[in] long nbBytePerPixel);
[id(0x0000000e), helpstring("GetImage")]
HRESULT GetImage(
[in] long imageFormat,
[out, retval] VARIANT* pVal);
[id(0x0000000f), helpstring("SetImage")]
HRESULT SetImage(
[in] long imageFormat,
[in] long sizeX,
[in] long sizeY,
[in] long nbBytePerPixel,
[in] VARIANT newImage);
[id(0x00000010), propget, helpstring("property CompressionFactor")]
HRESULT CompressionFactor([out, retval] long* pVal);
[id(0x00000010), propput, helpstring("property CompressionFactor")]
HRESULT CompressionFactor([in] long pVal);
};

[
odl,
uuid(71282686-6B02-4604-B796-CFA328F25BB8),
helpstring("IMKMinutiae Interface"),
dual,
oleautomation
]
interface IMKMinutiae : IDispatch {
[id(0x00000001), propget, helpstring("property size")]
HRESULT size([out, retval] short* pVal);
[id(0x00000002), propget, helpstring("property rawDataAsVariant")]
HRESULT rawDataAsVariant([out, retval] VARIANT* pVal);
[id(0x00000003), helpstring("method Save")]
HRESULT Save(BSTR filename);
[id(0x00000004), helpstring("method SetRawData")]
HRESULT SetRawData(
int type,
VARIANT* data);
[id(0x00000005), propget, hidden, helpstring("property buffer")]
HRESULT buffer([out, retval] long* pVal);
[id(0x00000006), helpstring("method Compress")]
HRESULT Compress();
[id(0x00000007), helpstring("method Uncompress")]
HRESULT Uncompress();
[id(0x00000008), helpstring("method Clear")]
HRESULT Clear();
[id(0x00000009), propget, helpstring("property SizeImageX")]
HRESULT SizeImageX([out, retval] short* pVal);
[id(0x0000000a), propget, helpstring("property SizeImageY")]
HRESULT SizeImageY([out, retval] short* pVal);
[id(0x0000000b), propget, helpstring("property DirectionalMatrix")]
HRESULT DirectionalMatrix([out, retval] VARIANT* pVal);
[id(0x0000000b), propput, helpstring("property DirectionalMatrix")]
HRESULT DirectionalMatrix([in] VARIANT pVal);
[id(0x0000000c), propget, helpstring("property
ClassificationStruct")]
HRESULT ClassificationStruct([out, retval] VARIANT* pVal);
[id(0x0000000c), propput, helpstring("property
ClassificationStruct")]
HRESULT ClassificationStruct([in] VARIANT pVal);
[id(0x0000000d), helpstring("method SetImageSize")]
HRESULT SetImageSize(
short sizeX,
short sizeY);
[id(0x0000000e), helpstring("method Load")]
HRESULT Load(BSTR filename);
[id(0x0000000f), helpstring("method CompressEx")]
HRESULT CompressEx([in] short requestedSize);
};

[
uuid(847AD7D2-2472-11D6-9FE1-00C04F1F9CD5),
helpstring("MKImage Class")
]
coclass MKImage {
[default] interface IMKImage;
};

[
uuid(C68F6123-51E6-4AC3-937D-3A2D22E11B2C),
helpstring("MKMinutiae Class")
]
coclass MKMinutiae {
[default] interface IMKMinutiae;
};

[
uuid(BB794D04-DCB2-427C-89E4-9A9CC7B7DFF3),
helpstring("Coder Class")
]
coclass MKCoder {
[default] interface IMKCoder;
};

[
odl,
uuid(880576C2-AFAD-42B3-9E7C-6CD496AC25D0),
helpstring("ICoder Interface"),
dual,
oleautomation
]
interface IMKCoder : IDispatch {
[id(0x00000001), helpstring("method Coding")]
HRESULT Coding(
[in] VARIANT rawImage,
[in] short sizeX,
[in] short sizeY,
[out] VARIANT* minutiae,
[out] short* quality,
[out, retval] short* result);
[id(0x00000002), propget, helpstring("property CoderType")]
HRESULT CoderType([out, retval] short* pVal);
[id(0x00000002), propput, helpstring("property CoderType")]
HRESULT CoderType([in] short pVal);
[id(0x00000003), propget, helpstring("property DisplayError")]
HRESULT DisplayError([out, retval] short* pVal);
[id(0x00000003), propput, helpstring("property DisplayError")]
HRESULT DisplayError([in] short pVal);
[id(0x00000004), helpstring("method Coding_vbs")]
HRESULT Coding_vbs(
[in] VARIANT rawImage,
[in] VARIANT sizeX,
[in] VARIANT sizeY,
[out] VARIANT* minutiae,
[out] VARIANT* quality,
[out, retval] VARIANT* result);
};

[
uuid(5C09EB19-8E0B-4786-890A-B7920DBAD76F),
helpstring("AdvancedCoder Class")
]
coclass MKAdvancedCoder {
[default] interface IMKAdvancedCoder;
};

[
odl,
uuid(2F925A2D-55A1-4627-B995-1CD88BFBF552),
helpstring("IAdvancedCoder Interface"),
dual,
oleautomation
]
interface IMKAdvancedCoder : IDispatch {
[id(0x00000001), helpstring("method Coding")]
HRESULT Coding(
[in] VARIANT rawImage,
[in] short sizeX,
[in] short sizeY,
[out] VARIANT* minutiae,
[out] short* quality,
[out] VARIANT* ridgeFlowMatrix,
[out] single* ridgePeriod,
[out, retval] short* result);
[id(0x00000002), helpstring("method Classify")]
HRESULT Classify(
[in] VARIANT ridgeFlowMatrix,
[in] short sizeX,
[in] short sizeY,
[in] single ridgePeriod,
[in] short quality,
[out] VARIANT* classificationBuffer,
[out, retval] short* result);
[id(0x00000003), helpstring("method ComputeFeatureVector")]
HRESULT ComputeFeatureVector(
[in] VARIANT rawImage,
[in] short sizeX,
[in] short sizeY,
[in] unsigned char exportRidgeFlowMatrix,
[in] short idFinger,
[out] VARIANT* featureVector,
[out, retval] short* result);
[id(0x00000004), helpstring("method FeatureVectorExtract")]
HRESULT FeatureVectorExtract(
[in] VARIANT featureVector,
[in] short what,
[out] VARIANT* value,
[out, retval] short* result);
[id(0x00000005), propget, helpstring("property CoderType")]
HRESULT CoderType([out, retval] short* pVal);
[id(0x00000005), propput, helpstring("property CoderType")]
HRESULT CoderType([in] short pVal);
[id(0x00000006), propget, helpstring("property classificationType")]
HRESULT ClassificationType([out, retval] short* pVal);
[id(0x00000006), propput, helpstring("property classificationType")]
HRESULT ClassificationType([in] short pVal);
[id(0x00000007), propget, helpstring("property DisplayError")]
HRESULT DisplayError([out, retval] short* pVal);
[id(0x00000007), propput, helpstring("property DisplayError")]
HRESULT DisplayError([in] short pVal);
[id(0x00000008), helpstring("method Coding_vbs")]
HRESULT Coding_vbs(
[in] VARIANT rawImage,
[in] VARIANT sizeX,
[in] VARIANT sizeY,
[out] VARIANT* minutiae,
[out] VARIANT* quality,
[out] VARIANT* ridgeFlowMatrix,
[out] VARIANT* ridgePeriod,
[out, retval] VARIANT* result);
[id(0x00000009), helpstring("method Classify_vbs")]
HRESULT Classify_vbs(
[in] VARIANT ridgeFlowMatrix,
[in] VARIANT sizeX,
[in] VARIANT sizeY,
[in] VARIANT ridgePeriod,
[in] VARIANT quality,
[out] VARIANT* classificationBuffer,
[out, retval] VARIANT* result);
[id(0x0000000a), helpstring("method ComputeFeatureVector_vbs")]
HRESULT ComputeFeatureVector_vbs(
[in] VARIANT rawImage,
[in] VARIANT sizeX,
[in] VARIANT sizeY,
[in] VARIANT exportRidgeFlowMatrix,
[in] VARIANT idFinger,
[out] VARIANT* featureVector,
[out, retval] VARIANT* result);
[id(0x0000000b), helpstring("method FeatureVectorExtract_vbs")]
HRESULT FeatureVectorExtract_vbs(
[in] VARIANT featureVector,
[in] VARIANT what,
[out] VARIANT* value,
[out, retval] VARIANT* result);
};

[
uuid(EBB63CCC-CF3C-460E-9135-079E12E1656C),
helpstring("MKWsq Class")
]
coclass MKWsq {
[default] interface IMKWsq;
};

[
odl,
uuid(807DAB0F-3373-4550-9036-694C0A49A99A),
helpstring("IMKWsq Interface"),
dual,
oleautomation
]
interface IMKWsq : IDispatch {
[id(0x00000001), helpstring("method Compress")]
HRESULT Compress(
[in] VARIANT rawImage,
[in] short sizeX,
[in] short sizeY,
[out] VARIANT* wsqImage,
[out, retval] short* result);
[id(0x00000002), helpstring("method Decompress")]
HRESULT Decompress(
[in] VARIANT wsqImage,
[out] VARIANT* rawImage,
[out] short* sizeX,
[out] short* sizeY,
[out, retval] short* result);
[id(0x00000003), helpstring("method Decompress_vbs")]
HRESULT Decompress_vbs(
[in] VARIANT wsqImage,
[out] VARIANT* rawImage,
[out] VARIANT* sizeX,
[out] VARIANT* sizeY,
[out, retval] VARIANT* result);
};

[
uuid(7E13413B-F868-4D16-8359-A7662D0CD51B),
helpstring("MKTemplateConvertor Class")
]
coclass MKTemplateConvertor {
[default] interface IMKTemplateConvertor;
};

[
odl,
uuid(12532440-5D2A-4A47-B002-8CA4A6A7932B),
helpstring("IMKTemplateConvertor Interface"),
dual,
oleautomation
]
interface IMKTemplateConvertor : IDispatch {
[id(0x00000001), helpstring("method ExportMinutiae")]
HRESULT ExportMinutiae(
[in] VARIANT i_PkCF,
[in] VARIANT i_FingerPos,
[in] BSTR i_ExportedFormat,
[out] VARIANT* o_ExportedBuffer,
[in, out] VARIANT* io_ExtendedParam,
[out, retval] short* result);
[id(0x00000002), helpstring("method ImportMinutiae")]
HRESULT ImportMinutiae(
[in] VARIANT i_Template,
[in] BSTR i_ImportedFormat,
[in] short i_Type,
[out] VARIANT* o_PkCF,
[out] VARIANT* o_FingerPos,
[in, out] VARIANT* io_ExtendedParam,
[out, retval] short* result);
};

[
uuid(20890077-1432-496A-A114-804C346E5F05),
helpstring("MKCBEFF Class")
]
coclass MKCBEFF {
[default] interface IMKCBEFF;
};

[
odl,
uuid(3D471415-1272-4CDF-BA05-3AB2EEB05B43),
helpstring("IMKCBEFF Interface"),
dual,
oleautomation
]
interface IMKCBEFF : IDispatch {
[id(0x00000001), propget, helpstring("property FormatType")]
HRESULT FormatType([out, retval] VARIANT* pVal);
[id(0x00000001), propput, helpstring("property FormatType")]
HRESULT FormatType([in] VARIANT pVal);
[id(0x00000002), propget, helpstring("property FormatOwner")]
HRESULT FormatOwner([out, retval] VARIANT* pVal);
[id(0x00000002), propput, helpstring("property FormatOwner")]
HRESULT FormatOwner([in] VARIANT pVal);
[id(0x00000003), propget, helpstring("property EncryptionOptions")]
HRESULT EncryptionOptions([out, retval] VARIANT* pVal);
[id(0x00000003), propput, helpstring("property EncryptionOptions")]
HRESULT EncryptionOptions([in] VARIANT pVal);
[id(0x00000004), propget, helpstring("property IntegrityOptions")]
HRESULT IntegrityOptions([out, retval] VARIANT* pVal);
[id(0x00000004), propput, helpstring("property IntegrityOptions")]
HRESULT IntegrityOptions([in] VARIANT pVal);
[id(0x00000005), propget, helpstring("property BiometricType")]
HRESULT BiometricType([out, retval] VARIANT* pVal);
[id(0x00000005), propput, helpstring("property BiometricType")]
HRESULT BiometricType([in] VARIANT pVal);
[id(0x00000006), propget, helpstring("property ProcessedLevel")]
HRESULT ProcessedLevel([out, retval] VARIANT* pVal);
[id(0x00000006), propput, helpstring("property ProcessedLevel")]
HRESULT ProcessedLevel([in] VARIANT pVal);
[id(0x00000007), propget, helpstring("property Purpose")]
HRESULT Purpose([out, retval] VARIANT* pVal);
[id(0x00000007), propput, helpstring("property Purpose")]
HRESULT Purpose([in] VARIANT pVal);
[id(0x00000008), propget, helpstring("property Quality")]
HRESULT quality([out, retval] VARIANT* pVal);
[id(0x00000008), propput, helpstring("property Quality")]
HRESULT quality([in] VARIANT pVal);
[id(0x00000009), propget, helpstring("property BiometricDataBlock")]
HRESULT BiometricDataBlock([out, retval] VARIANT* pVal);
[id(0x00000009), propput, helpstring("property BiometricDataBlock")]
HRESULT BiometricDataBlock([in] VARIANT pVal);
[id(0x0000000a), helpstring("method Write")]
HRESULT Write(
[in] long i_Type,
[out] VARIANT* o_Buffer,
[out, retval] short* result);
[id(0x0000000b), helpstring("method Load")]
HRESULT Load(
[in] VARIANT i_Buffer,
[in] long i_Type,
[out, retval] short* result);
[id(0x0000000c), helpstring("method Clear")]
HRESULT Clear();
[id(0x0000000d), helpstring("method Save")]
HRESULT Save(
[in] long i_Type,
[in] BSTR filename,
[out, retval] short* result);
[id(0x0000000e), helpstring("method LoadFromFile")]
HRESULT LoadFromFile(
[in] BSTR filename,
[in] long i_Type,
[out, retval] short* result);
};

[
uuid(E84F4BDF-1160-4A83-8E50-78369B4AB212),
helpstring("MKMinex Class")
]
coclass MKMinex {
[default] interface IMKMinex;
};

[
odl,
uuid(97490A75-A55F-495F-8D87-F89174E8CFC6),
helpstring("IMKMinex Interface"),
dual,
oleautomation
]
interface IMKMinex : IDispatch {
[id(0x00000001), helpstring("method CodeToMinexFormat")]
HRESULT CodeToMinexFormat(
[in] VARIANT i_varImage,
[in] short i_sImageHeight,
[in] short i_sImageWidth,
[in] short i_sFingerPos,
[in] short i_sImpressionType,
[out] VARIANT* o_varMinexTemplate,
[out, retval] short* o_sResValue);
};
};

Bodo Bergmann

unread,
Jun 19, 2009, 8:04:42 AM6/19/09
to openroa...@googlegroups.com
Hi Barathi,

based on your .NET example and the TypeLib info I would test the
following code:

DECLARE
objMinutiae = MKMinutiae;
objImage = MKImage;
objAcquistion = MKAcquisition;
ENDDECLARE
{
objImage.Create(int2(416), int2(416), int2(1));
objAcquistion.selectDriver = 0;

objAcquistion.WindowCaption = 'MyWorkplace Time Attendance';
objAcquistion.FingerCaption = 'Place finger on the scanner for
acquisition';
objAcquistion.ShowQualityBar = int2(1);
objAcquistion.UseConsolidation = int2(1);
objAcquistion.fingerDetection = int2(1);

objAcquistion.qualityThreshold = int2(75);
objAcquistion.NbGoodQualityToAcceptFinger = int2(3);
objAcquistion.Run(objImage, objMinutiae, null);
}

It makes sure that all "short" parameters/properties are assigned a
2-byte integer.
I can't really say much more as there is no documentation for the COM
Library available,
and testing is not possible due to missing software (library) and
hardware it requires.

When does the runtime error occur - already on the Create() method
invocation or when doing Run()?

barathi

unread,
Jun 21, 2009, 11:08:08 PM6/21/09
to openroa...@googlegroups.com
Hi Bodo,
I tested the code but it gives a run time error at the invocation of the
method run.
The below code gives a compile error as well, that why I commented in my
original code which I had sent earlier. I will post a code which was done in
Delphi which they said that they had problems while integrating but
orvercame latter.
objAcquistion.WindowCaption = 'MyWorkplace Time Attendance';
^
%% Error at line 18
E_W402F6 Attribute 'windowcaption' is unknown for the class
'mkacquisition'

Regards

barathi

unread,
Jun 21, 2009, 11:23:44 PM6/21/09
to openroa...@googlegroups.com
Hi Bodo,
This is the code in Delphi.


unit W_Delphi_p;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ActiveMKit_Enroll_TLB, StdCtrls;

type
TForm5 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form5: TForm5;

implementation

{$R *.dfm}

procedure RunAcquisition();
var
objAcquisition : TMKAcquisition;
objImage : TMKImage;
objPK : TMKMinutiae;
objInit : TComponent;
begin

//Initialize variables
objInit := TComponent.Create(objInit);
objAcquisition := TMKAcquisition.Create(objInit);
objImage := TMKImage.Create(objInit);
objPK := TMKMinutiae.Create(objInit);

objAcquisition.DefaultInterface.selectDriver := 2;
objAcquisition.DefaultInterface.FingerCaption := 'Please place your
finger';
objAcquisition.DefaultInterface.WindowCaption := 'Sagem Integration';

objImage.DefaultInterface.Create(416, 416, 1);
objAcquisition.DefaultInterface.RunNoMatch(objImage.DefaultInterface,
objPK.DefaultInterface);



//objAcquisition.RunNoMatch(objImage, objPK);
end;

procedure TForm5.Button1Click(Sender: TObject);
begin
RunAcquisition();
end;

end.

Bodo Bergmann

unread,
Jun 22, 2009, 3:37:37 AM6/22/09
to openroa...@googlegroups.com
Hi Barathi,

The WindowCaption property has a setter (propput), but no getter
(propget) defined,
this problem within the COM library may cause the compile error in
OpenROAD.

A runtime error during the Run method might be caused by a number of
different things,
e.g. missing parameter, missing library this library depends on, etc.

I think the best way would be to get access to your machine to do some
tests there.
Due to the hardware dependency it's not possible to do any tests without
having access to the device.

You could also try to run it from another COM client,
e.g. from an Excel-Macro (VBA) after referencing the same library.

Bodo Bergmann

unread,
Jun 22, 2009, 3:46:38 AM6/22/09
to openroa...@googlegroups.com
Barathi,

In this code the method in question is commented out:
//objAcquisition.RunNoMatch(objImage, objPK);

Even you uncomment it then it's different from the last example (what I
"translated" into OpenROAD)
where you used the "Run" method rather than "RunNoMatch".
So the OpenROAD code for this line would look like:
objAcquistion.RunNoMatch(objImage, objMinutiae);

It would be really good to get some documentation (help files) from
SAGEM on their COM library,
incl. COM (not .Net) examples, dependencies, etc.

barathi

unread,
Jun 22, 2009, 4:29:10 AM6/22/09
to openroa...@googlegroups.com
Hi Bodo,
I tried in VBA(Excel) But it gives a syntax error at the methods
create and run. It says "expected =".I do not have VB-6 on my machine to
check if it can work on it.

Regarding the method RunNOMatch, we can either use run or RunNoMatch both
does the same function except that RunNoMatch take 2 arguments only. This is
my understanding as I tested both in .NET. I do not have any documentation
on the COM libraries except some coding samples in VB-6, and .net.
If you can please send me your email address I can send a invitation through
webex But I am not sure about the time difference as I am located in Sri
Lanka. Please can you let me know what time is convenient for you.

Bodo Bergmann

unread,
Jun 22, 2009, 6:41:51 AM6/22/09
to openroa...@googlegroups.com
After having a ahared desktop session with Barathi we got it running,
both in Excel(VBA) and OpenROAD.

The only changes required in the OpenROAD code (from what I last posted)
were

1) Comment out the statement:
objAcquistion.WindowCaption = 'MyWorkplace Time Attendance';

The WindowCaption property has a setter method (propput), but no getter
method (propget) defined.
This problem within the SAGEM COM library may cause the compile error in
OpenROAD,
which probably just looks for the getter method when compiling.

2) Replace:
objAcquistion.Run(objImage, objMinutiae, null);
with
objAcquistion.RunNoMatch(objImage, objMinutiae);
Reply all
Reply to author
Forward
0 new messages