Adolfo,
I don't have the leisure of time to re-create a small sample but this is part of my code:
runtime files I'm using are:
1. commpro.dll
2. comms.dll
3. msvcr71.dll
4. zkemkeeper.dll
5. zkemsdk.dll
6. zkemkeeper.oca
to check if object was registered:
IF !IsActiveX('zkemkeeper.ZKEM.1')
RegisterServer( 'zkemkeeper.DLL' )
ENDIF
to connect:
...
oBiometric := TActiveX():New( oWnd,'zkemkeeper.ZKEM.1')
...
oBiometric:SetCommPassword( 'password' ) //this is important if you set communication password to your biometric device
...
IF ( lGo := oBiometric:Connect_Net( 'ip address', 'port' ) )
IF !oBiometric:IsTFTMachine( 'device_id' ) //you set this nID in your device, important if you have many devices. this is numeric
MsgAlert('non-TFT Device..', 'COMPATIBILITY ISSUE')
ENDIF
...
oBiometric:RefreshData( 'device_id' ) //some commands you may want to use
...
IF oBiometric:ReadGeneralLogData( 'device_id' )
j := 0
WHILE oBiometric:SSR_GetGeneralLogData( 'device_id',,,,,,,,,,) //this is the only way I know how to get number of records from the device.
j++ //if you know a better way please share.
END
oBiometric:ReadGeneralLogData( 'device_id' ) //get ready and position 1st record pointer
//this is how I get every record
WHILE oBiometric:SSR_GetGeneralLogData('device_id', @cEnrollID, @nVerifyMO, @nInOutMO, @nYearOUT, @nMoOUT, @nDayOUT, @nHrOUT,
@nMinOUT, @nSecOUT, @nWorkOUT )
...
//work your way here how to process those data
END
ENDIF
ELSE
nError := 0
oBiometric:GetLastError(@nError)
msginfo( nError )
ENDIF
Please share if you have better ways or faster ways to get all those data.
I hope this helps.