Reference Manual
Reference Manual
V3.1
Revision History
Important Note:
We always guarantee backward compatibility of OCX for existing devices, new OCX always embraces all products.
Therefore it is strongly recommended to use new OCX.
Rev.
V3.0 Draft
V3.01 Draft
Date
7/4/2011
7/18/2011
V3.02 Draft
V3.03
V3.1
8/3/2011
11/18/2011
6/8/2012
Comments
Draft version for the unified OCX (supports all the types of machine)
Draft version.
If an interface gets time, then it always gets in second unit.
General operation by XML & general event firing by XML added, this means that
future modification or addition is forbidden, they must be implemented through
these XML interfaces.
Draft version. Brief description of XML operation is added.
New DLL mode support. See 5.DLL mode support.
Obsolete *_EXT functions were removed. These functions never used by customers,
so they were removed.
Multi-device safe, multi-thread safe support. See 6.Multi-device safe, Multi-thread
safe support.
"TCP active connection" mode support. See 7."TCP active connection" mode
support.
P2P support. See 8.P2P support.
See Appendix 2. Miscellaneous Items
-2-
Contents
Revision History ............................................................................. 2
Contents ................................................................................... 3
1.
Brief description .......................................................................... 5
1.1 Support machines ....................................................................... 5
1.2 SBXPC ............................................................................... 5
2.
Properties .............................................................................. 8
2.1 CommPort (deprecated) .................................................................. 8
2.2 Baudrate (deprecated) .................................................................... 8
2.3 ReadMark ............................................................................ 8
3.
Methods ............................................................................... 9
3.1 SetMachineType ........................................................................ 9
3.2 DotNET .............................................................................. 9
3.3 GetEnrollData ......................................................................... 10
3.4 GetEnrollData1(for .NET users) ............................................................. 11
3.5 SetEnrollData ......................................................................... 12
3.6 SetEnrollData1(for .NET users) ............................................................. 12
3.7 DeleteEnrollData ....................................................................... 13
3.8 ReadSuperLogData ..................................................................... 14
3.9 GetSuperLogData ...................................................................... 14
3.10
ReadGeneralLogData ................................................................. 16
3.11
GetGeneralLogData .................................................................. 16
3.12
ReadAllSLogData .................................................................... 19
3.13
GetAllSLogData ..................................................................... 19
3.14
ReadAllGLogData .................................................................... 20
3.15
GetAllGLogData ..................................................................... 20
3.16
GetDeviceStatus ..................................................................... 21
3.17
GetDeviceInfo....................................................................... 22
3.18
SetDeviceInfo ....................................................................... 23
3.19
EnableDevice ....................................................................... 24
3.20
EnableUser ......................................................................... 24
3.21
GetDeviceTime ...................................................................... 25
3.22
SetDeviceTime ...................................................................... 25
3.23
PowerOnAllDevice ................................................................... 26
3.24
PowerOffDevice ..................................................................... 26
3.25
ModifyPrivilege ..................................................................... 27
3.26
ReadAllUserID ...................................................................... 27
3.27
GetAllUserID ....................................................................... 28
3.28
GetSerialNumber .................................................................... 29
3.29
GetBackupNumber ................................................................... 29
3.30
GetProductCode ..................................................................... 29
3.31
ClearKeeperData ..................................................................... 30
3.32
EmptyEnrollData ..................................................................... 30
3.33
EmptyGeneralLogData ................................................................ 30
3.34
EmptySuperLogData .................................................................. 30
3.35
GetUserName ....................................................................... 31
3.36
GetUserName1(for .NET users) ........................................................... 31
3.37
SetUserName ....................................................................... 32
3.38
SetUserName1(for .NET users) ........................................................... 32
3.39
GetCompanyName ................................................................... 32
3.40
GetCompanyName1(for .NET users) ....................................................... 33
3.41
SetCompanyName ................................................................... 33
3.42
SetCompanyName1(for .NET users) ....................................................... 33
3.43
GetDoorStatus ...................................................................... 34
-3-
3.44
SetDoorStatus ...................................................................... 34
3.45
GetBellTime ........................................................................ 35
3.46
SetBellTime ........................................................................ 35
3.47
ConnectSerial ....................................................................... 36
3.48
ConnectTcpip ....................................................................... 36
3.49
Disconnect ......................................................................... 37
3.50
SetIPAddress (deprecated) ............................................................. 37
3.51
OpenCommPort (deprecated) ........................................................... 37
3.52
CloseCommPort (deprecated) ........................................................... 38
3.53
GetLastError ........................................................................ 38
3.54
GetDeviceLongInfo(deprecated).......................................................... 39
3.55
SetDeviceLongInfo(deprecated) .......................................................... 40
3.56
ModifyDuressFP(deprecated) ............................................................ 41
4.
Next generation of SBXPC with XML ........................................................... 42
4.1 GeneralOperationXML ................................................................... 42
5.
DLL mode support ....................................................................... 43
6.
Multi-device safe, Multi-thread safe support ..................................................... 44
7.
"TCP active connection" mode support ......................................................... 44
8.
P2P (Peer To Peer) support ................................................................. 46
8.1 ConnectP2p .......................................................................... 47
Appendix 1. Specific Machine Functionality .......................................................... 48
Appendix 2. Miscellaneous Items ................................................................. 49
-4-
1.
Briefdescription
1.1
Support machines
1.2
SBXPC
SBXPC reference consists of SBXPC.OCXwhich is a Windows OCX component containing the properties, methods and event
handlersas the below. If you want to see more specificmachine functionalityit is strongly recommended to see Appendix 1.
Specific Machine Functionality first.
No
Properties/Methods
Description
2 Properties
1
CommPort (deprecated)
Baudrate(deprecated)
ReadMark
The flag which represents whether set a mark on the last read
record.
3 Methods
1
SetMachineType
DotNET
GetEnrollData
GetEnrollData1
SetEnrollData
SetEnrollData1
DeleteEnrollData
ReadSuperLogData
GetSuperLogData
10
ReadGeneralLogData
11
GetGeneralLogData
12
ReadAllSLogData
Reads all the management records from the device and stores
on memory.
13
GetAllSLogData
14
ReadAllGLogData
Reads all the attendance records from the machine and stores
on memory.
15
GetAllGLogData
16
GetDeviceStatus
17
GetDeviceInfo
18
SetDeviceInfo
19
EnableDevice
20
EnableUser
21
GetDeviceTime
22
SetDeviceTime
23
PowerOnAllDevice
24
PowerOffDevice
25
ModifyPrivilege
26
ReadAllUserID
Reads the data of all the enrolled users from the machine and
stores on memory.
27
GetAllUserID
Gets the data of all the enrolled users from the memory.
28
GetSerialNumber
29
GetBackupNumber
30
GetProductCode
31
ClearKeeperData
32
EmptyEnrollData
33
EmptyGeneralLogData
34
EmptySuperLogData
35
GetUserName
36
GetUserName1
37
SetUserName
38
SetUserName1
39
GetCompanyName
40
GetCompanyName1
41
SetCompanyName
42
SetCompanyName1
43
GetDoorStatus
44
SetDoorStatus
45
GetBellTime
46
SetBellTime
47
ConnectSerial
48
ConnectTcpip
49
Disconnect
50
SetIPAddress(deprecated)
51
OpenCommPort(deprecated)
52
CloseCommPort(deprecated)
-6-
53
GetLastError
54
GeneralOperationXML
55
GetDeviceLongInfo(deprecated)
56
SetDeviceLongInfo(deprecated)
57
ModifyDuressFP(deprecated)
58
GetMachineIP
59
GetDepartName(deprecated)
60
SetDepartName(deprecated)
61
StartEventCapture
62
StopEventCapture
63
ConnectP2p
4 Event Handlers
1
OnReceiveEventXML
-7-
2.
Properties
2.1
CommPort (deprecated)
The port number of serial communication.This property is set before call of OpenCommPort.
Type (C++)
long
CommPort
int
CommPort
Type (C#)
Initial Value
1(COM1)
Description
See OpenCommPort.
2.2
Baudrate (deprecated)
The baudrate of serial communication.This property is set before call of OpenCommPort.
Type (C++)
long
Baudrate
int
Baudrate
Type (C#)
Initial Value
115200
Description
See OpenCommPort.
2.3
ReadMark
The flag which represents whether obtained logs are marked as read.
Type (C++)
BOOL
ReadMark
bool
ReadMark
Type (C#)
Initial Value
TRUE
Description
See log getting functions.
-8-
3.
Methods
3.1
SetMachineType
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
It is normally needed for legacy devices only, because new devices inform its type while connecting.
String of a machine type is confidential, Smackbio makes customer-specific document for this information.
If there is no customer-specific document, do not care about machine type, DO NOT CALL THIS FUNCTION.
3.2
DotNET
-9-
3.3
GetEnrollData
Value
Meaning
0~9
Future
10
11
Card data
14
User Timezone
15
16
User department
dwMachinePrivilege
deprecated,
supported
for
SB2900,
SB2960(SB3600) only
deprecated,
supported
for
SB2900,
SB2960(SB3600) only
deprecated, supported for SB2960(SB3600)
only
Value
Level
Meaning
Employee
User
Administrator
Supervisor
Enrollment
manager
Setup manager
Setuponly
dwEnrollData
dwPassWord
: [OUT] The repository for fingerprint data. Its size is 1404+12 Bytes.
: [OUT]The repository for password or card value.
The password consists of four digits.
IfdwBackupNumber == 14, 16, then dwPassWord has special pattern
perproduct.Please refer sample source for more detail.
If dwBackupNumber == 15, then the value of dwPassWordwas encoded by
special ruleto preserve beginning zeros. So you should decode to get proper
value. Please refer sample source for more detail.
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
- 10 -
Remarks
When dwBackupNumber is in 0~9, then value of dwPassWordis meaningless, only the value of dwEnrollData
is meaningful.
Of course, reverse case is also true.
.NET client software must use GetEnrollData1
3.4
- 11 -
3.5
SetEnrollData
dwMachinePrivilege
dwEnrollData
dwPassWord
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
When dwBackupNumber is in 0~9 (20~29), then value of dwPassWordis meaningless, only the value of
dwEnrollData is meaningful.
Of course, reverse case is also true.
.NET client software must use SetEnrollData1
3.6
- 12 -
3.7
DeleteEnrollData
Value
Meaning
0~9
10
Password data
11
Card data
12
13
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
- 13 -
3.8
ReadSuperLogData
Reads the newly recorded management logs from the machine and stores it into the PC memory.
Syntax (C++)
BOOL ReadSuperLogData(
long dwMachineNumber);
Syntax (C#)
bool ReadSuperLogData(
long dwMachineNumber);
Parameters
dwMachineNumber
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
Use GetSuperLogDatato parse stored logs.
If ReadMark property is TRUE, then stored logs are marked as read at the device.
3.9
GetSuperLogData
dwSEnrollNumber
dwSMachineNumber
dwGEnrollNumber
dwGMachineNumber
dwManipulation
Value
Meaning
10
11
12
13
dwBackupNumber
Value
Meaning
0~9
10
Password data
13
Card data
- 15 -
3.10 ReadGeneralLogData
Reads the newly recorded time logs from the machine and stores it into the PC memory.
Syntax (C++)
BOOL ReadGeneralLogData(
long
dwMachineNumber);
Syntax (C#)
bool ReadGeneralLogData(
int
dwMachineNumber);
Parameters
dwMachineNumber
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
Use GetGeneralLogDatato parse stored logs.
If ReadMark property is TRUE, then stored logs are marked as read at the device.
3.11 GetGeneralLogData
Parses a time log from the PC memory.
Syntax (C++)
BOOL GetGeneralLogData(
long
dwMachineNumber,
long* dwTMachineNumber,
long* dwEnrollNumber,
long* dwEMachineNumber,
long* dwVerifyMode,
long* dwYear,
long* dwMonth,
long* dwDay,
long* dwHour,
long* dwMinute,
long* dwSecond);
Syntax (C#)
bool GetGeneralLogData(
int
dwMachineNumber,
ref int dwTMachineNumber,
ref int dwEnrollNumber,
ref int dwEMachineNumber,
ref int dwVerifyMode,
ref int dwYear,
ref int dwMonth,
ref int dwDay,
ref int dwHour,
ref int dwMinute,
ref int
dwSecond);
Parameters
dwMachineNumber
dwTMachineNumber
Machine
Type
Meaning
SB3600
- 16 -
EC500
dwEnrollNumber
dwEMachineNumber
dwVerifyMode
Meaning
Fingerprint-based
Password-based
Card-based
Fingerprint + Card
Fingerprint + Password
Card + Password
51
In : Fingerprint-based
52
In : Password-based
53
In : Card-based
101
Out : Fingerprint-based
102
Out : Password-based
103
Out : Card-based
151
Extra: Fingerprint-based
152
Extra: Password-based
153
Extra: Card-based
10
11
12
13
14
20
21
22
23
- 18 -
3.12 ReadAllSLogData
Reads all recorded management logs from the machine and stores it into the PC memory.
That is, this function ignores read mark.
Syntax (C++)
BOOL ReadAllSLogData(
long dwMachineNumber);
Syntax (C#)
boolReadAllSLogData(
long dwMachineNumber);
Parameters
dwMachineNumber
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
Use GetALLSLogDatato parse stored logs.
3.13 GetAllSLogData
Parses a management log from the PC memory.
Syntax (C++)
BOOL GetAllSLogData(
long
dwMachineNumber,
long*
dwTMachineNumber,
long*
dwSEnrollNumber,
long*
dwSMachineNumber,
long*
dwGEnrollNumber,
long*
dwGMachineNumber,
long*
dwManipulation,
long*
dwBackupNumber,
long*
dwYear,
long*
dwMonth,
long*
dwDay,
long*
dwHour,
long*
dwMinute,
long*
dwSecond);
Syntax (C#)
boolGetAllSLogData(
int
dwMachineNumber,
ref int
dwTMachineNumber,
ref int
dwSEnrollNumber,
ref int
dwSMachineNumber,
ref int
dwGEnrollNumber,
ref int
dwGMachineNumber,
ref int
dwManipulation,
ref int
dwBackupNumber,
ref int
dwYear,
ref int
dwMonth,
ref int
dwDay,
ref int
dwHour,
ref int
dwMinute,
ref int
dwSecond);
Remarks
This function is same as GetSuperLogData, except that it is used after calling of ReadAllSLogData.
- 19 -
3.14 ReadAllGLogData
Reads all recorded time logs from the machine and stores it into the PC memory.
That is, this function ignores read mark.
Syntax (C++)
BOOL ReadAllGLogData(
long
dwMachineNumber);
Syntax (C#)
boolReadAllGLogData(
int
dwMachineNumber);
Parameters
dwMachineNumber
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
Use GetALLGLogDatato parse stored logs.
3.15 GetAllGLogData
Parses a time log from the PC memory.
Syntax (C++)
BOOL GetAllGLogData(
long
dwMachineNumber,
long* dwTMachineNumber,
long* dwEnrollNumber,
long* dwEMachineNumber,
long* dwVerifyMode,
long* dwYear,
long* dwMonth,
long* dwDay,
long* dwHour,
long* dwMinute,
long* dwSecond);
Syntax (C#)
boolGetAllGLogData(
int
dwMachineNumber,
ref int dwTMachineNumber,
ref int dwEnrollNumber,
ref int dwEMachineNumber,
ref int dwVerifyMode,
ref int dwYear,
ref int dwMonth,
ref int dwDay,
ref int dwHour,
ref int dwMinute,
ref int
dwSecond);
Remarks
This function is same as GetGeneralLogData, except that it is used after calling of ReadAllGLogData.
- 20 -
3.16 GetDeviceStatus
Gets a current status of the device.
Syntax(C++)
BOOL GetDeviceStatus(
long
dwMachineNumber,
long
dwStatus,
long*
dwValue);
Syntax(C#)
bool GetDeviceStatus(
int
dwMachineNumber,
int
dwStatus,
ref int
dwValue);
Parameters
dwMachineNumber
dwStatus
Value
Meaning
3
4
5
Alarm status
bit 0 Opening time over
bit 1 Illegal open
bit 2 Duress verification
bit 3 Tampering detected
dwValue
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
- 21 -
3.17 GetDeviceInfo
Gets a device parameter (setting)from the machine.
Syntax(C++)
BOOL GetDeviceInfo(
long
dwMachineNumber,
long
dwInfo,
long*
dwValue);
Syntax(C#)
bool GetDeviceInfo(
int
dwMachineNumber,
int
dwInfo,
ref int
dwValue);
Parameters
dwMachineNumber
dwInfo
dwValue
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
Below are available values of the dwInfo paramter.
Value
Meaning
Range
0~10
1~255
UI Language
English
Chinese (simplified)
Chinese (Traditional)
0~9999
0~10
6
7
8
10
11
0~1000
0~100
0~255
9,600 bps
19,200 bps
38,400 bps
57,600 bps
115,200 bps
Even check
Odd check
Stop bit 1
Stop bit 2
12
13
14
15
Date separator
Verification mode
FP or Card or PWD
FP & Card
FP & PWD
Unconditional Close
Unconditional Open
Auto
None
Always Open
Always Close
16
0~255
17
Anti-pass
18
0~9999
19
Daylight offset
0~3
Disable
Enable
3.18 SetDeviceInfo
Sets a device parameter (setting) to the machine.
Syntax(C++)
BOOL SetDeviceInfo(
long
dwMachineNumber,
long
dwInfo,
long
dwValue);
Syntax(C#)
bool SetDeviceInfo(
int
dwMachineNumber,
int
dwInfo,
int
dwValue);
Parameters
dwMachineNumber
dwInfo
dwValue
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
For more information, see GetDeviceInfo.
- 23 -
3.19 EnableDevice
Enables(or disables) the machinefor mutual access from the PC.
Syntax(C++)
BOOL EnableDevice(
long
dwMachineNumber,
long
bFlag);
Syntax(C#)
bool EnableDevice(
int
dwMachineNumber,
int
bFlag);
Parameters
dwMachineNumber
bflag
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
It is recommended to disable the machine while accessing from the PC.
It is mandatory to disable the machine while transactional operation from the PC
3.20 EnableUser
Enables(or disables) a user.
Syntax(C++)
BOOL EnableUser(
long
dwMachineNumber,
long
dwEnrollNumber,
long
dwEMachineNumber,
long
dwBackupNumber,
long
bFlag);
Syntax(C#)
bool EnableUser(
int
dwMachineNumber,
int
dwEnrollNumber,
int
dwEMachineNumber,
int
dwBackupNumber,
int
bFlag);
Parameters
dwMachineNumber
dwEnrollNumber
dwEMachineNumber
dwBackupNumber
bflag
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
Most products do not support individual enabling/disabling per credential (indicated by backup number),
that is, enabling/disabling state is unique per user.
This means that dwBackupNumber is really meaningless.
- 24 -
3.21 GetDeviceTime
Gets the current time of the machine.
Syntax(C++)
BOOL GetDeviceTime(
long
dwMachineNumber,
long*
dwYear,
long*
dwMonth,
long*
dwDay,
long*
dwHour,
long*
dwMinute,
long*
dwSecond,
long*
dwDayOfWeek);
Syntax(C#)
bool GetDeviceTime(
int
dwMachineNumber,
ref int dwYear,
ref int dwMonth,
ref int dwDay,
ref int dwHour,
ref int dwMinute,
ref int dwSecond,
ref int dwDayOfWeek);
Parameters
dwMachineNumber
: Target machine ID.
dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond
: [OUT] Current time of the machine.
dwDayOfWeek
: [OUT] The value of current weekday of the machine
Value
Meaning
1
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
3.22 SetDeviceTime
Sets the current time of the machine.
Syntax(C++)
BOOL SetDeviceTime(
long
dwMachineNumber);
Syntax(C#)
boolSetDeviceTime(
int
dwMachineNumber);
Parameters
dwMachineNumber
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
Current PC time will be transferred.
3.23 PowerOnAllDevice
Powers on all the machines, which connected at the same RS-485 network.
Syntax(C++)
void
PowerOnAllDevice( void );
void
PowerOnAllDevice( void );
Syntax(C#)
Parameters
None.
Return Values
None.
Remarks
Some products maybe do not support RS-485 power on.
3.24 PowerOffDevice
Powers off a machine.
Syntax(C++)
BOOL PowerOffDevice(
long
dwMachineNumber);
Syntax(C#)
bool PowerOffDevice(
long
dwMachineNumber);
Parameters
dwMachineNumber
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
- 26 -
3.25 ModifyPrivilege
Modifies the level of a user.
Syntax(C++)
BOOL ModifyPrivilege(
long
dwMachineNumber,
long
dwEnrollNumber,
long
dwEMachineNumber,
long
dwBackupNumber,
long
dwMachinePrivilege);
Syntax(C#)
bool ModifyPrivilege(
int
dwMachineNumber,
int
dwEnrollNumber,
int
dwEMachineNumber,
int
dwBackupNumber,
int
dwMachinePrivilege);
Parameters
dwMachineNumber
dwEnrollNumber
dwEMachineNumber
dwBackupNumber
dwMachinePrivilege
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
Most products do not support individual level per credential (indicated by backup number), that is, user level
value is unique per user.
This means that dwBackupNumber is really meaningless.
3.26 ReadAllUserID
Reads the database summaryof the machine and stores it into PC memory.
Syntax(C++)
BOOL ReadAllUserID(
long
dwMachineNumber);
Syntax(C#)
bool ReadAllUserID(
int
dwMachineNumber);
Parameters
dwMachineNumber
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
Use GetALLUserIDto parse stored summary.
- 27 -
3.27 GetAllUserID
Parses an item of the database summary from the PC memory.
Syntax(C++)
BOOL GetAllUserID(
long
dwMachineNumber,
long*
dwEnrollNumber,
long*
dwEMachineNumber,
long*
dwBackupNumber,
long*
dwMachinePrivilege,
long*
dwEnable);
Syntax(C#)
bool GetAllUserID(
int
dwMachineNumber,
ref int
dwEnrollNumber,
ref int
dwEMachineNumber,
ref int
dwBackupNumber,
ref int
dwMachinePrivilege,
ref int
dwEnable);
Parameters
dwMachineNumber
dwEnrollNumber
dwEMachineNumber
dwBackupNumber
dwMachinePrivilege
dwEnable
Meaning
Record of an attendance of this user has been forbidden, that is, his/her
attendance is not recorded in spite of his/her registration.
Meaning
Normalfingerprint.
Return Values
TRUE (nonzero): success.
FALSE (zero): failure, it means that there are no more items to parse.
Remarks
This function parsesan item of the database summary from the PC memory, which filled by ReadAllUserID.
- 28 -
3.28 GetSerialNumber
Gets the serial number of the machine.
Syntax(C++)
BOOL GetSerialNumber(
long
dwMachineNumber,
BSTR*
dwSerialNumber);
Syntax(C#)
bool GetSerialNumber(
int
dwMachineNumber,
ref string
dwSerialNumber);
Parameters
dwMachineNumber
dwSerialNumber
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
3.29 GetBackupNumber
Gets the maximum allowable count of finger per user.
Syntax(C++)
long GetBackupNumber(
long
dwMachineNumber);
Syntax(C++)
int GetBackupNumber(
int
dwMachineNumber);
Parameters
dwMachineNumber
Return Values
Maximum allowable count of finger per user. Normally, its value is 3 or 10.
(Some products report other value, which has not above meaning.)
3.30 GetProductCode
Gets the product code of the machine.
Syntax(C++)
BOOL GetProductCode(
long
dwMachineNumber,
BSTR*
lpszProductCode);
Syntax(C#)
bool GetProductCode(
int
dwMachineNumber,
ref string
lpszProductCode);
Parameters
dwMachineNumber
lpszProductCode
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
- 29 -
3.31 ClearKeeperData
Clears all the (management & time) logs and user database.
Syntax(C++)
BOOL ClearKeeperData(
long
dwMachineNumber);
Syntax(C#)
bool ClearKeeperData(
int
dwMachineNumber);
Parameters
dwMachineNumber
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
3.32 EmptyEnrollData
Clears user database.
Syntax(C++)
BOOL EmptyEnrollData(
long
dwMachineNumber);
Syntax(C#)
bool EmptyEnrollData(
int
dwMachineNumber);
Parameters
dwMachineNumber
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
3.33 EmptyGeneralLogData
Clears all time logs.
Syntax(C++)
BOOL EmptyGeneralLogData(
long
dwMachineNumber);
Syntax(C#)
bool EmptyGeneralLogData(
int
dwMachineNumber);
Parameters
dwMachineNumber
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
3.34 EmptySuperLogData
Clears all management logs.
- 30 -
Syntax(C++)
BOOL EmptySuperLogData(
long
dwMachineNumber);
Syntax(C#)
bool EmptySuperLogData(
int
dwMachineNumber);
Parameters
dwMachineNumber
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
3.35 GetUserName
Gets the name of a user.
Syntax(C++)
BOOL GetUserName(
long
DeviceKind,
long
dwMachineNumber,
long
dwEnrollNumber,
long
dwEMachineNumber,
VARIANT*
dwUserName);
Parameters
DeviceKind
dwMachineNumber
dwEnrollNumber
dwEmachineNumber
dwUserName
: Not used
: Target machine ID.
: User ID
:Not used, set as target machine ID.
:[OUT] The repository for name string.
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
.NET client software must use GetUserName1
- 31 -
3.37 SetUserName
Sets the name of a user.
Syntax(C++)
BOOL SetUserName(
long
DeviceKind,
long
dwMachineNumber,
long
dwEnrollNumber,
long
dwEMachineNumber,
VARIANT*
dwUserName);
Parameters
DeviceKind
dwMachineNumber
dwEnrollNumber
dwEmachineNumber
dwUserName
: Not used
: Target machine ID.
: User ID
: Not used, set as target machine ID.
: The repository for name string.
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
.NET client software must use SetUserName1
3.39 GetCompanyName
Gets the company name of the machine.
Syntax(C++)
BOOL GetCompanyName(
long
dwMachineNumber,
VARIANT*
dwCompanyName);
Parameters
dwMachineNumber
dwCompanyName
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
.NET client software must use GetCompanyName1
- 32 -
3.41 SetCompanyName
Sets the company name of the machine.
Syntax(C++)
BOOL SetCompanyName(
long
dwMachineNumber,
long
vKind,
VARIANT*
dwCompanyName);
Parameters
dwMachineNumber
vKind
dwCompanyName
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
.NET client software must use GetCompanyName1
- 33 -
3.43 GetDoorStatus
Gets the door status of the machine.
Syntax(C++)
BOOL GetDoorStatus(
long
dwMachineNumber,
long*
dwValue);
Syntax(C#)
bool GetDoorStatus(
int
dwMachineNumber,
ref int
dwValue);
Parameters
dwMachineNumber
dwValue
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
3.44 SetDoorStatus
Sets the door status of the machine.
Syntax(C++)
BOOL SetDoorStatus(
long
dwMachineNumber,
long
dwValue);
Syntax(C#)
bool SetDoorStatus(
int
dwMachineNumber,
int
dwValue);
Parameters
dwMachineNumber
dwValue
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
- 34 -
3.45 GetBellTime
Gets the ringing time of the machine.
Syntax(C++)
BOOL GetBellTime(
long
dwMachineNumber,
long*
dwValue,
long*
dwBellInfo);
Syntax(C#)
bool GetBellTime(
int
dwMachineNumber,
ref int
dwValue,
ref int
dwBellInfo);
Parameters
dwMachineNumber
dwValue
dwBellInfo
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
The structure of dwBellInfo depends on machine type, so please refer proper sample source code per
machine type.
3.46 SetBellTime
Sets the ringing time of the machine.
Syntax(C++)
BOOL SetBellTime(
long
dwMachineNumber,
long
dwValue,
long*
dwBellInfo);
Syntax(C#)
bool SetBellTime(
int
dwMachineNumber,
int
dwValue,
ref int
dwBellInfo);
Parameters
dwMachineNumber
dwValue
dwBellInfo
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
The structure of dwBellInfo depends on machine type, so please refer proper sample source code per
machine type.
- 35 -
3.47 ConnectSerial
Connects to the machine via the serial port(RS232, RS485) or USB.
Syntax(C++)
BOOL ConnectSerial(
long
dwMachineNumber,
long
dwCommPort,
long
dwBaudRate);
Syntax(C#)
bool ConnectSerial(
int
dwMachineNumber,
int
dwCommPort,
int
dwBaudRate);
Parameters
dwMachineNumber
dwCommPort
Value
Meaning
USB
COM1
COM2
COM3
COM4
dwBaudRate
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
3.48 ConnectTcpip
Connects to the machine via the Ethernet (TCP/IP).
Syntax(C++)
BOOL ConnectTcpip(
long
dwMachineNumber,
BSTR*
lpszIPAddress,
long
dwPortNumber,
long
dwPassWord);
Syntax(C#)
bool ConnectTcpip(
int
dwMachineNumber,
ref string
lpszIPAddress,
- 36 -
int
int
dwPortNumber,
dwPassWord);
Parameters
dwMachineNumber
lpszIPAddress
dwPortNumber
dwPassword
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
3.49 Disconnect
Disconnects the machine.
Syntax(C++)
Void
Disconnect(
void
Syntax(C#)
Void
Disconnect(
void
Parameters
None.
Return Values
None.
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Syntax(C++)
BOOL OpenCommPort(
long
dwMachineNumber);
bool OpenCommPort(
int
dwMachineNumber);
dwMachineNumber
Syntax(C#)
Parameters
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
3.53 GetLastError
Gets the last error code.
Syntax(C++)
void GetLastError(
long*
dwErrorCode);
void GetLastError(
ref long
dwErrorCode);
dwErrorCode
Syntax(C#)
Parameters
Value
Meaning
Success.
Invalid parameter
Failure
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
- 38 -
3.54 GetDeviceLongInfo(deprecated)
Gets a device parameter (big, its length > 4bytes) from the machine.
Syntax(C++)
BOOL GetDeviceLongInfo(
long
dwMachineNumber,
long
dwInfo,
long*
dwValue);
Syntax(C#)
bool GetDeviceLongInfo(
int
dwMachineNumber,
int
dwInfo,
ref int
dwValue);
Parameters
dwMachineNumber
dwInfo
dwValue
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
The data acquired by this function are the same as those shown on the Settings menu on the terminal
excepting the date separator.
Below are values of the setup information.
Value
Meaning
Data size
16bytes
16bytes
Time zone
6400bytes
200bytes
- 39 -
Structure
array of long-type values(month, day,
hour, minute)
array of long-type values(month, day,
hour, minute)
(50 set) * (8 day/set) * (4 long-type
value/day)
Day : Sunday~Saturday,Holiday
Value : Start hour, Start minute, End
hour, End minute
(10 set) * (5 long-type value/set)
Value : Mode, Start hour, Start minute,
End hour, End minute
Mode :
0
FP or Card or PWD
1
FP & Card
2
FP & PWD
3
Card & PWD
4
FP & Card & PWD
200bytes
Holiday
3072bytes
3.55 SetDeviceLongInfo(deprecated)
Sets a device parameter (big, its length > 4bytes) to the machine.
Syntax(C++)
BOOL SetDeviceInfo(
long
long
long*
dwMachineNumber,
dwInfo,
dwValue);
bool SetDeviceInfo(
int
int
ref int
dwMachineNumber,
dwInfo,
dwValue);
Syntax(C#)
Parameters
dwMachineNumber
dwInfo
dwValue
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
- 40 -
3.56 ModifyDuressFP(deprecated)
Modifies duress status of afingerprint.
Syntax(C++)
BOOL ModifyDuressFP (
long
dwMachineNumber,
long
dwEnrollNumber,
long
dwBackupNumber,
long
dwDuressSetting);
Syntax(C#)
bool ModifyDuressFP (
int
dwMachineNumber,
int
dwEnrollNumber,
int
dwBackupNumber,
int
dwDuressSetting);
Parameters
dwMachineNumber
dwEnrollNumber
dwBackupNumber
dwDuressSetting
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
- 41 -
4.
To support (almost) all products with same OCX, new specs will be implemented through GeneralOperationXML.
More spec modification is forbidden.
4.1
GeneralOperationXML
bool
Syntax(C#)
Parameters
lpszReqNResXML
Return Values
TRUE (nonzero): success.
FALSE (zero): failure.
Remarks
The syntax of XML request & XML response depend on machine type & operation.
Best reference is only sample source, please see proper sample source.
To make XML & parse XML, following helper functions are supported.
Syntax(MIDL)
long XML_ParseInt(BSTR* lpszXML, BSTR lpszTagname);
long XML_ParseLong(BSTR* lpszXML, BSTR lpszTagname);
boolean XML_ParseBoolean(BSTR* lpszXML, BSTR lpszTagname);
boolean XML_ParseString(BSTR* lpszXML, BSTR lpszTagname, BSTR* lpszValue);
boolean XML_ParseBinaryByte(BSTR* lpszXML, BSTR lpszTagname, BYTE* pData, long dwLen);
boolean XML_ParseBinaryWord(BSTR* lpszXML, BSTR lpszTagname, WORD* pData, long dwLen);
boolean XML_ParseBinaryLong(BSTR* lpszXML, BSTR lpszTagname, long* pData, long dwLen);
boolean XML_ParseBinaryUnicode(BSTR* lpszXML, LPCTSTR lpszTagname, BSTR* pData, long dwLen);
boolean XML_AddInt(BSTR* lpszXML, BSTR lpszTagname, int nValue);
boolean XML_AddLong(BSTR* lpszXML, BSTR lpszTagname, long dwValue);
boolean XML_AddBoolean(BSTR* lpszXML, BSTR lpszTagname, boolean bValue);
boolean XML_AddString(BSTR* lpszXML, BSTR lpszTagname, BSTR lpszValue);
boolean XML_AddBinaryByte(BSTR* lpszXML, BSTR lpszTagname, BYTE* dwData, long dwLen);
boolean XML_AddBinaryWord(BSTR* lpszXML, BSTR lpszTagname, WORD* dwData, long dwLen);
boolean XML_AddBinaryLong(BSTR* lpszXML, BSTR lpszTagname, long* dwData, long dwLen);
boolean XML_AddBinaryUnicode(BSTR* lpszXML, BSTR lpszTagname, BSTR* lpszData);
boolean XML_AddBinaryGlyph(BSTR* lpszXML, BSTR lpszMessage, long width, long height,
lpszFontDescriptor);
If an operation is supported through both raw & XML interface, then the XML interface is preferred.
- 42 -
BSTR
5.
To help native C++ developers & OCX-customers, SBXPC is separated intowrapper part (OCX format) and core part(DLL
format).
Below is its diagram.
The device
SBPCCOMM.DLL
SBXPCDLL.DLL
(Core Part)
SBXPC.OCX
(Wrapper Part)
If a BSTR* argument has __needfree specifier, C++ application SHOULD free return BSTR value using SysFreeString.
If a function has a VARIANT argument, C++ application SHOULD not use it.
If a function has _EXT suffix, it is for old SB3000 series, DO NOT TRY TO CALL IT.
- 43 -
6.
7.
There is a condition where the device cannot accept TCP/IP connection from the PC.
In this condition SBXPC accepts TCP/IP connection from the device.
(This function is supported in EC500.)
To use "TCP active connection", the hosting program calls connection-establishment functions with target devices IP =
0.0.0.0.
Below is detailed description.
Changes from the previous version are as follows.
A new submenu item TCP connect mode has been created in Set IP menu.
When this parameter is set to Passive(default value), EC500 time clock works just same as before. (PC starts
connection.)
When this parameter is set to Active, user should set IP address parameter to 0.0.0.0 while calling
ConnectTcpip function.In this case, time clock starts TCP connection.
- 44 -
NOTE: As time clock tries to connect to PC in every 10s, it may take about 5~10s after you press Open button in
the above sample.
Setting value of
TCP connect mode option
Passive
Active
- 45 -
Required
parameters
in
ConnectTcpip function
Time clocks IP address and TCP
port number
PCs port number
(Set IP address to 0.0.0.0)
8.
Before, to connect to a device through TCP/IP, the user must know the devices IP address.
Therefore controlling of the device through the Internet was impossible, because the device cannot have public IP address.
P2P mode resolves such problem.
Premise:There is a global server with public IP, the server supports global bridge service. Theoretically, it is need only one
server in the Earth.
Users activity:
When connecting to the device, enter [Servers public IP & TCP port] and [The devices global unique ID, 8bytes].
The user can see the devices global unique ID at the diagnostics screen which appeared when press ESC (or MENU)
key while booting.
S100
S300
The device is configured as using DHCP. The device is connected to the Internet. The device has menu item to
enter [Servers public IP & TCP port].
Technical Insight:
Relay Connection
Global Server
Internet
Router
P2P Connection
Router
User
Device
- 46 -
The server makes best effective connection (P2P connection) between the user PC & the device. If the P2P connection is once
established, the server does not interfere.
For example, if both the user PC & the device are in same LAN, the P2P connection will be established without the Internet.
If P2P connection was not established for some reason (firewall, NAT configuration), the server relays between the user PC &
the device, this connection is relay connection.
Maybe, relay connections speed is lower than P2P connection.
New OCX interface is as below.
8.1
ConnectP2p
ConnectP2p(
string lpszMachineID,
string lpszServerIPAddress,
dwServerPortNumber,
dwPassWord,
int pnError);
Parameters
lpszMachineID
lpszServerIPAddress
dwServerPortNumber
dwPassWord
pnError
: [IN] The devices global unique ID, 8bytes hexadecimal string. For example,
15FADA4F825D1010
: [IN] The servers IP address.
: [IN] The servers TCP port number. Default value is 4000.
: [IN] The devices communication password.
: [OUT] Extended error value.
Value
Meaning
if
connection
Return Values
Nonzero (0x10001 ~ 0x1FFFF): success.Connection established. The return value is OCX Device ID.
0: failure. Connection failed
Remarks
The return value is OCX Device ID. This mean that all subsequent OCX calls must use this returned OCX
Device ID for dwMachineNumber parameter.
- 47 -
Machines
Methods
1 GetEnrollData/
GetEnrollData1
2 SetEnrollData/
SetEnrollData1
3 DeleteEnrollData
4 ReadSuperLogData
5 GetSuperLogData
6 ReadGeneralLogData
7 GetGeneralLogData
8 ReadAllSLogData
9 GetAllSLogData
10 ReadAllGLogData
11 GetAllGLogData
12 GetDeviceStatus
13 GetDeviceInfo
14 SetDeviceInfo
15 EnableDevice
16 EnableUser
17 GetDeviceTime
18 SetDeviceTime
19 PowerOnAllDevice
20 PowerOffDevice
21 ModifyPrivilege
22 ReadAllUserID
23 GetAllUserID
24 GetSerialNumber
25 GetBackupNumber
26 GetProductCode
27 ClearKeeperData
28 EmptyEnrollData
29 EmptyGeneralLogData
30 EmptySuperLogData
31 GetUserName/
GetUserName1
32 SetUserName/
SetUserName1
33 GetCompanyName/
GetCompanyName1
34 SetCompanyName/
SetCompanyName1
35 GetDoorStatus
36 SetDoorStatus
37 GetBellTime
38 SetBellTime
39 ConnectSerial
40 ConnectTcpip
41 Disconnect
42 SetIPAddress
43 OpenCommPort
S100
(SB2900)
S300
(SB2960)
SB3600
SB2910
(EC500)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- 48 -
44
45
46
47
48
49
50
51
52
53
54
55
56
CloseCommPort
GetLastError
GeneralOperationXML
GetDeviceLongInfo
SetDeviceLongInfo
ModifyDuressFP
GetMachineIP
GetDepartName
SetDepartName
StartEventCapture
StopEventCapture
OnReceiveEventXML
ConnectP2p
Machines
Methods
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
S100
(SB2900)
S300
(SB2960)
SB3600
- 49 -
+
+
+
+
+
+
+
SB2910
(EC500)